斐波那契数列前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);
}
}
}
结果:
--------------------------------------------------
谢谢!