斐波那契数列Python和Java

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);
        }

    }
}

结果:
在这里插入图片描述
--------------------------------------------------
谢谢!

猜你喜欢

转载自blog.csdn.net/qq_43371004/article/details/84317548