题目
编写程序,使用递归方法打印输出Fibonacci数列的前20项
斐波那契(Fibonacci)数列
Fibonacci数列(Fibonacci sequence)
,又称黄金分割数列、因数列的形式简洁且定义明确,被广泛的应用在理论数学和应用数学中。
Fibonacci数列由意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci)
在1202年的一本书中提出,因此得名。他在书中提出了这样一个问题:一对刚出生的兔子,从第二个月开始就可以生育,每月每对可生育的兔子都会生出一对新的兔子,新出生的兔子从第二个月开始就可以生育。假设所有的兔子都不会死去,问:每个月的兔子总数是多少?
根据这个问题的设定,我们可以得到的Fibonacci数列:1, 1, 2, 3, 5, 8, 13, 21, ....
也就是说,Fibonacci数列中的每一项,从第3项开始,都是前两项之和。用数学公式来表示,就是:F(n) = F(n-1) + F(n-2),其中n>=3,F(1) = 1,F(2) = 1
Fibonacci数列与黄金分割有着密切的关系。当Fibonacci数列进行到足够大的时候,相邻两项的比值将趋近于黄金分割的值:1.6180339887…
实现思路
1.定义一个fibonacci
递归方法,用于计算Fibonacci
数列的第n项,在fibonacci
方法中,首先进行判断,如果n<=1
,则直接返回n
本身。如果n>1
,则通过递归调用fibonacci(n-1)
和fibonacci(n-2)
来计算第n项的值,即前两项的和
public static int fibonacci(int n){ //如果n小于等于1,返回n if(n <= 1){ return n; }else{//否则返回前两项之和 return fibonacci(n - 1) + fibonacci(n - 2); } }
2.在main
方法中,我们使用一个循环来输出fibonacci
数列的前20项
,不断地循环调用定义的fibonacci
方法,直到循环结束,输出fibonacci
数列的前20项
public static void main(String[] args){ //循环输出前20项 for(int i = 0; i < 20; i++){ System.out.println(fibonacci(i)); } }
具体代码实现
//使用递归方法输出fibonacci数列的前20项 public class fib{ public static void main(String[] args){ //循环输出前20项 for(int i = 0; i < 20; i++){ System.out.println(fibonacci(i)); } } //定义递归方法 public static int fibonacci(int n){ //如果n小于等于1,返回n if(n <= 1){ return n; }else{//否则返回前两项之和 return fibonacci(n - 1) + fibonacci(n - 2); } } }
结束语
以上就是Java练习题-输出斐波那契(Fibonacci)数列
持续更新Java练习题专栏,敬请期待