递归的意思是调用方法本身,你连方法都没有定义,何来递归?举个栗子:public class TestWL {
public static int fab(int index) {
if (index == 1 || index == 2) {
return 1;
} else {
return fab(index - 1) + fab(index - 2);
}
}

public static void main(String[] agrs) {
int fab = TestWL.fab(12);
System.out.println(fab);
}
}

解决方案 »

  1.   

    楼主贴出来的代码有逻辑错误
    for (int i = 1; i > 2; i++) {
    这个永远也不会执行循环里的东西还是帖的代码不对?
      

  2.   

    http://90chuanlin.blog.163.com/blog/static/404299292012913105539477/
      

  3.   

    斐波那切是每一项等于前两项之和,你的程序里每一项等于前两项的标号之和。第40项肯定是39+38=77;
    public class Test{
    public static void main(String[] args){
    int sum1 = 1;
    int sum2 = 1;
    int sum = 1;
    for(int i=3;i<41;i++){ sum1 = sum2;
    sum2 = sum;
    sum = sum1+sum2;
    }
    System.out.println(sum); }
    }
      

  4.   

    看了下这个地址提供的方法还是有问题的
    稍微改了下
    /**
     * F(1) = 1, F(2) = 1 
     * F(N) = F(N - 1) + F(N - 2)
     * 
     * @author Administrator
     * 
     */
    public class Fibonacci { /**
     * 用递归的方式实现Fibonacci
     * 
     * @param n
     * @return
     */
    public int fibonacciRecursive(int n) {
    if (n <= 2) {
    return 1;
    }
    return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);
    } /**
     * 用非递归的方式实现Fibonacci
     * 
     * @param n
     * @return
     */
    public int finonacciNormal(int n) {
    if (n <= 2) {
    return 1;
    } int a1 = 1;
    int a2 = 1;
    int an = 0; for (int i = 2; i < n; i++) {

    an = a1 + a2;
    a1 = a2;
    a2 = an;
    System.out.print(i+"=");
    System.out.println(an);
    } return an;
    } public static void main(String[] args) {
    Fibonacci fibonacci = new Fibonacci(); System.out.println("fibonacciRecursive==="
    + fibonacci.fibonacciRecursive(40));
    System.out
    .println("finonacciNormal===" + fibonacci.finonacciNormal(40));
    }
      

  5.   

     public void fab_u(int j) {
    for (int i = 1; i < j; i++) {
    ar = a1 + a2;
    atemp = a2;
    a1 = a2;
    a2 = ar;
    System.out.println(ar);
    }
      

  6.   


    package des;public class FibonacciDemo {    public static long fib(int n) {
            long f1 = 1, f2 = 1;
            long m = 0;
            if(n <= 2) {
                return 1;
            } else {
                for(int i = 3; i <= n; i++) {
                    m = f1 + f2;
                    f2 = f1;
                    f1 = m;
                }
                return m;
            }
        }
        public static void main(String [] args) {
            long m = fib(40);
            System.out.println("Fibonacci(40) is " + m);
        }
    }
    结果:Fibonacci(40) is 102334155
      

  7.   

     public static void main(String[] agrs)
        {
           
            int[] fab = new int[40];
            for (int i = 0; i <40; i++)
            {
                if (i == 0 || i == 1)
                {
                    fab[i]=1;
                }
                else
                {
                    fab[i] = fab[i-1] + fab[i-2];
                    
                }
                System.out.println(fab[i]);
            }
            
        }