斐波拉契数列的递归和非递归写法(c/java)

来源:互联网 发布:手机安装ubuntu arm版 编辑:程序博客网 时间:2024/06/08 02:09
C语言版本:
#include <stdio.h>long fib(long n) {if(n<=2)return(1);if(n>=3)return(fib(n-1)+fib(n-2));}long fib_1(long n) {long i;if(n <=2) {return 1;} else {long a = 1;long b = 1;for( i = 2 ; i < n-1 ; i++) {b = a + b;a = b - a;printf("a=%ld,b=%ld\n",a,b);}return a + b;}}void main() {long n,f;printf("please input n:");scanf("%ld",&n);f=fib_1(n);printf("f=%ld\n",f);}

Java版本:

public class FibTest {       public static void main(String[] arags){           long begin = System.currentTimeMillis();          System.out.println(fib(10));      //System.out.println(fib_digui(10));         long end = System.currentTimeMillis();           System.out.println(end - begin);       }  public static long fib_digui(int n)        {            if (n <= 1)            {                return n;            }            else            {                return fib_digui(n - 1) + fib_digui(n - 2);            }        }    public static long fib(int n){           if(n < 3)               return 1;           else{               long a = 1;               long b = 1;               for(int i = 2 ; i < n-1 ;i++){                    b = a + b;                   a = b - a;                   System.out.println("a = "+a +"  b = "+b);               }               return a + b;           }       }   }  


0 0