費氏數列(fibonacci sequence)是程式語言中常見的遞迴範例
他的每一項分別是:
A0=0
A1=1
AN=A(N-1)+A(N-2)
也就是A2以後,每一項的值就是前兩項的值相加
使用遞迴的方法可以把費式數列的值做出來
以下是遞迴的範例



public class FibonacciTest {



public static void main(String[] args) {

System.out.println(fibonacci(50));

}



public static long fibonacci(int x){

if(x==1||x==2){

return 1;

}else {

return fibonacci(x-1)+fibonacci(x-2);

}

}

}




但是使用遞迴的效能很差
所以如果有人提出這個問題
又沒有特別規定要用遞迴做出來的話
建議使用一般的迴圈來解決這個問題
效能會有明顯的改善
以下是範例



public class FibonacciDemo {



public static void main(String[] args) {



FibonacciDemo demo = new FibonacciDemo();

System.out.println(demo.fibonacci(50));

}



public long fibonacci(int n){

if(n==0){

return 0;

} else {

long x_1 = 0;

long x_2 = 1;

for(int i=0;i<n;i++){

if(i>0){

x_2 = x_2 + x_1;

x_1 = x_2 - x_1;

}

}

return x_2;

}

}


}




arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Dnight 的頭像
    Dnight

    D奈老師的部落格

    Dnight 發表在 痞客邦 留言(0) 人氣()