斐波那契數列Python和Java
阿新 • • 發佈:2018-11-24
Fibonacci sequence
斐波那契數列前30項
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229
遞迴不一定好用,有的場景中,遞迴會使得效率降低,數字大的話,遞迴會卡死,
斐波那契數列用遞迴效率很低,若要顯示前100項時候,明顯非遞迴很快實現,遞迴很慢,所以斟酌使用。
python
遞迴
程式碼
def ferb(n):
#遞迴
if n<=1:
return n
else:
return(ferb(n-2)+ferb(n-1))
number=int(input("輸出前幾項:"))
if number <=0:
print("請輸入正整數")
else:
for i in range(1,number+1):
print(ferb(i))
結果:
輸出前幾項:10 1 1 2 3 5 8 13 21 34 55 >>>
非遞迴
程式碼
a = 0
b = 1
c = a+b
number = int(input ("輸出前幾項的值:"))
for i in range(1,number+1):
print(c)
c = a+b
a,b=b,c
結果:
Java
遞迴
程式碼
import java.util.Scanner; public class ferbonacci { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("輸出前幾項:"); int number = scanner.nextInt(); if (number<1){ System.out.println("請輸入正整數"); } else{ for (int i = 1;i < number+1;i++){ int result = ferb(i); System.out.println(result); } } } public static int ferb(int n){ if (n <= 1) { return n; } else { return ferb(n-2)+ferb(n-1); } } }
結果:
--------------------------------------------------
謝謝!