前段時間老師在講函數(shù)調用的時候,用Fibonacci數(shù)列來演示了一下,因為以前沒怎么接觸過Fibonacci,所以當時很懵。
當時讓求的是Fibonacci數(shù)列中,第N位值為多少,當時老師寫的是:

之后呢,老師留的做作業(yè)是:求Fibonacci數(shù)列前N位的和,晚上自習的時候在想,求和的話必須需要用For循環(huán),懵懵懂懂的寫下了以下代碼:
public class Fibonacci{ public static void main(String[] args){ int i =5; //聲明一個int類型的變量i 并賦值5 int b = 0; //聲明一個int類型的變量b 代表和 for(int a = i; a >=1 ; --a){ // for循環(huán):a= i = 5 b += Fibonacci(a); //調用Fibonacci方法 并賦值給b } System.out.PRintln( b ); } public static int Fibonacci(int n){//斐波那契數(shù)列代碼,此處就不詳說了。 if (n == 1) { return 0; } if (n == 2) { return 1; }else{ return Fibonacci(n-1) + Fibonacci(n-2); } }}可得出結果,這個地方要感謝圖圖同學,他告訴我用迭代實現(xiàn)Fibonacci的和,我仔細看了一下,并用此方法得出結果:
public class Fei_Bo_Na_Qi{ public static void main(String[] args){ int m = 5; System.out.println( "斐波那契數(shù)列的 第 "+m+"位數(shù) 為: "+m1(m) );// 在輸出的時候調用函數(shù) } public static int m1(int i){ //創(chuàng)建方法 if (i == 1) { //if如果... 如果等于1 就執(zhí)行下面java語句 return 0; // 返回值 為0,返回給m1 并且結束一下java語句 } if (i == 2) { //if如果... 如果等于2 就執(zhí)行下面java語句 return 1; //返回值 為1 并結束一下Java語句 } else { //如果不==2 也不==1 就執(zhí)行一下java語句 int a = 0; // 在這里代表斐波那契數(shù)列的第一個數(shù) 用int數(shù)據(jù)類型 聲明一個變量 變量名字為a 并賦值為0 int b = 1; // 這里代表斐波那契的第二個數(shù) int c = 0; //這里代表斐波那契的第三個數(shù) int e = 0; for(int j=3; j <=i ; ++j){ //for循環(huán) 這里這個i-2 是什么意思呢?因為如果等于3的時候,是這里運算的第一個,就是等于3的時候,在這里等于1 額 可以這么說吧 因為等于1 和 2 的時候都在上面輸出,要是在這里不減去2的話,會循環(huán)三次 那就影響結果了 //recycle code block c=a+b; // 把a和b的和 賦值給c 因為除了前兩位 后面的每一位都是由前兩位的和組成的 e+=c; //這是把前N列的數(shù)加起來 System.out.println( a+"+"+b+"斐波那契數(shù)列的 第 "+j+" 位 的值為"+"="+c ); //輸出 a+b=c a=b; //b代表數(shù)列的第二個,a代表數(shù)列的第一個,c代表數(shù)列的第三個 我吧b賦值給a a就等于第二個了 b=c; //再把c賦值給b b就等于數(shù)列的第三個了 那么下次循環(huán),c 就是數(shù)列的第四個了 一次類推 } System.out.println( "斐波那契數(shù)列的 前 "+ i +" 位數(shù) 的和為: "+(e+1) ); //這是輸出前N列的和 return c; //等輸出完設置的數(shù)列 再把c 返回到m1 再返回到方法的調用出(也就是main方法的輸出哪里,因為在那里調用的,)方法不調用不執(zhí)行,調用才執(zhí)行,并把值返回到方法的調用出 } }}或許有多于步驟和不合理的地方,但已經是現(xiàn)階段能做的最好的了,望大家多多指導,謝謝!
新聞熱點
疑難解答