有一列数的规则如:1 , 1, 2, 3, 5, 8, 13, 21, 34,............求第30位是多少?用递归实现

解决方案 »

  1.   

    List<BigInteger> list = new ArrayList();
    for(int i =0;i<30;i++){
    if(list.size()>=2){
    BigInteger a = list.get(i-1);
    BigInteger b = list.get(i-2);
    list.add(a.add(b));
    }else{
    list.add(new BigInteger("1"));
    }
    }
    System.out.println(list.get(29));
      

  2.   

    public static void main(String[] args) {
    int n = 31; // (第n位)
    System.out.println(getNumber(n - 1));
    }public static int getNumber(int n) {
    if (n >= 2) return getNumber(n - 2) + getNumber(n - 1);
    else return 1;
    }
      

  3.   

    public int F(int i) {
            if (i == 0) {
                return 0;
            } if (i == 1) {
                return 1;
            } if (i > 1) {
                return F(i - 1) + F(i - 2);
            } else{
                return 0;
            }
    }
      

  4.   

    其实 很简单  在个数 多余2个的时候  该数为前两个数之和public static void main(String[] args) {
        int n = 31; // (第n位)
        System.out.println(getNumber(n - 1));
    }public static int getNumber(int n) {
        if (n >= 2) return getNumber(n - 2) + getNumber(n - 1);
        else return 1;
    }
    借用下代码
      

  5.   

    算第 30 项的话直接使用 Fibonacci 数列公式就行了,不必要再从第 1 项开始算起了。
      

  6.   

    class T1{ 
    public static void main(String[] args) { 
    int a=1;
    int b=1;
    int c=1;
    int s=1;
    while(s<30){
                c=a;
    System.out.println("第"+s+"位c="+c);
    s=s+1;
    a=a+b;

    c=b;
    System.out.println("第"+s+"位c="+c);
    s=s+1;
    b=a+b;
    }

    }
      

  7.   

    第1位c=1
    第2位c=1
    第3位c=2
    第4位c=3
    第5位c=5
    第6位c=8
    第7位c=13
    第8位c=21
    第9位c=34
    第10位c=55
    第11位c=89
    第12位c=144
    第13位c=233
    第14位c=377
    第15位c=610
    第16位c=987
    第17位c=1597
    第18位c=2584
    第19位c=4181
    第20位c=6765
    第21位c=10946
    第22位c=17711
    第23位c=28657
    第24位c=46368
    第25位c=75025
    第26位c=121393
    第27位c=196418
    第28位c=317811
    第29位c=514229
    第30位c=832040