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){
long num[]=new long[n];
num[0]=1;
if (n>1){
num[1]=1;
for (int i=2;i< n;i++)
num[i]=num[i-1]+num[i-2];
}
return num[n-1];
}
}
--------------------Configuration: --------------------
請輸入費氏數列項數m:46
費氏數列第46項數的值為1836311903
Process completed.
我的寶貝,
用FOR迴圈寫真是快多囉!
遞迴~~什麼鳥東東嘛!
文章標籤
全站熱搜

請問..asp.net要寫的話怎麼寫呢.
ㄜ...不是差不多嗎?照著改就可以囉!
其實..
我遇到的題目是.
寫一段程式列印以下的數字
0.1.1.2.3.5.8,....,n
而我寫的
Dim f1, f2, c, i As Integer
f1 = 1
f2 = 1
Response.Write(f1 & "," & f2 & ",")
For i = 1 To 5
c = f1 + f2
f1 = f2
f2 = c
Response.Write(c & ",")
Next i
能在簡化一點嗎?
而且我的0,1,1都要先印出來.
能否就一個for就包含了呢
其實我覺得你這樣寫還ok,
如果為了要一個for迴來跑,可能要在for迴圈裡面加工,
程式跑起來反而沒效率。
這個程式好像有bug 會出現負值喔 輸入50答案不對 有些好像也不對
不好意思,這隻小程式我有測試過,
請問你說的BUG是什麼BUG?
有BUG你也要說出來我才能改阿 @@"
另外...變成負值會不會是數值已經超出範圍了?-__-
不好意思我是初學者 因為輸入50會變成負值我也還不是很懂...我也不確定是不是
超出範圍..報歉
Don't Care! 有問題可以一起研究~~ 我知道會出現負數的原因了。我return的值是int,把 int num[]=new int[n]; 改成 long num[]=new long[n]; 這樣子就正常了喔!
這CODE輸入1會error喔
加一個判斷, 這樣子應該ok了吧? 改好了, 你在試試看囉! @@"
為什麼return num[n-1]啊? 我是新手><
array是從0開始算, 第n項在array裡面就是n-1。
目前是java新手,老實說以我現在的實力還是看不懂版主寫的內容 分享一下我的作法 package my.sisth.java; import java.io.*; public class 費氏數列 { public static void main(String[] args) throws IOException{ BufferedReader times=new BufferedReader(new InputStreamReader(System.in)); System.out.println("欲知費氏數列第n項,請輸入n 其中n必須小於4003"); String x=times.readLine(); //使用者輸入數值 int b=Integer.parseInt(x),a=b/2; long i,j=0; for(i=1;(j+i)<=Long.MAX_VALUE&&a>0;i+=j,a--){ j=i+j; } if(b%2==1) System.out.println("所求為:"+i); if(b%2==0) System.out.println("所求為:"+j); } } 看起來好繁複啊