Java数组方法的创建和调用练习题

方法的创建和调用

1.有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。

这里使用异或运算的方法。

异或运算属于位运算,位运算是基于二进制的运算。所以异或运算是把十进制的数转化为二进制再进行运算。

本题思路:若该数组中的数为{1,4,7,4,1,7,9}
将十进制数转化为二进制数:
1—>0;4—>100;7—>111;9—>1001

依次对这些二进制数进行异或运算,异或符号为"^"。相同为0,不同为1
0 ^ 0 = 0;
0 ^ 100 = 100;
100 ^ 111 = 11;
11 ^ 100 = 111;
111 ^ 0 = 111;
111 ^ 111 =0;
0 ^ 1001 =1001;—>9
即得到只出现一次的数字。

public class TestDmeo{
    public static void main(String[] args) {
        int[] A={1,4,7,4,1,7,9};
        //int[] A={1,2,3,4,4,3,1};
        int B=0;
        for(int i=0;i< A.length;i++){
            B=B^A[i];
        }
        System.out.println(B);

    }
}

2.求斐波那契数列的第n项。(迭代实现)

n = 1,即为斐波那契数列的第一项,第一项为0;
n = 2,3,即为斐波那契数列的第二、三项,第二、三项均为1;
n = 4,即为斐波那契数列的第四项,第四项为第二项加上第三项;
n = 5,是第四项加上第三项;
…以此类推,可得到第n项。

import java.util.Scanner;
public class TestDmeo {
    public static int Asd(int n) {
        if (n == 1) {
            return 0;
        }
        if(n == 2 || n == 3){
            return 1;
        }
        else{
            return (Asd(n-1)+Asd(n-2));
        }
    }

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入:");
        int n= scanner.nextInt();
        int b=Asd(n);
        System.out.println(b);
    }
}

3.求 N 的阶乘

2!= 2 * 1=2*(1!)
3!=3 * 2 * 1=3*(2!)

即n! =n * (n-1)!

import java.util.Scanner;
public class TestDmeo{
    public static int Cas(int n){
        int a=1;
        for(int i=1;i<=n;i++){
            a *=i;
        }
        return a;
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入N:");
        int n=scanner.nextInt();
        System.out.println(Cas(n));
    }
}

4.求1!+2!+3!+4!+…+n!的和(求阶乘和)

和第三题区别不大,只需添加求和代码。

import java.util.Scanner;
public class TestDmeo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入n值:");
        int n = scanner.nextInt();
        System.out.println("1!+...+n!="+Cir(n));//打印结果
    }

    public static int Cir(int n){
        int x=1;//定义初始阶乘;
        int sum=0;//求和
        //求和循环
        for(int i=1;i<=n;i++){
            x=x*i;
            sum=sum+x;
        }
        return sum;
    }
}

你可能感兴趣的:(java,算法,开发语言)