import java.io.*;
public class test {
public static void main(String args[])throws IOException {
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
System.out.print("請輸入費氏數列項數m:");
int m=Integer.parseInt(buf.readLine());
System.out.println("費氏數列第"+m+"項數的值為"+fib(m));
}
public static long fib(int n){
if(n==1)
return 1;
else if (n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
}
--------------------Configuration: --------------------
請輸入費氏數列項數n:46
費氏數列第46項數的值為1836311903
Process completed.
這一題因為使用遞迴的關係,
所以執行效率很差,
我用46就跑了好久好久呢!
文章標籤
全站熱搜

這位大大 else if (n==1) return 1; 這邊應該改成 return 0;
這位大大,你先測試一下吧! f(1)與f(2)都是1,return 1 才是正確的好嗎?
來練習一下~重構~XD .... public static long fib(int n){ if(n==1 || n==2) return 1; return fib(n-1)+fib(n-2); } ....
水!
今天看到PHP的費氏數列~遞迴寫的的好與壞影響了~就速度啊~ 你用到46就有點慢了~改良後的~就算是第100位的數也是一秒完成!@@ 我終於參考PHP語法改出java的了~java都忘光了~連陣列都不會設~囧!
我現在好少用blog @@
XD
fib(1) 應該要回傳 0 因為費氏數列是從 0 跟 1開始的 所以照理來說 第一項依該要是0 第二項是1....以此類推