Fibonacci数
Posted 夜空中最亮的星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fibonacci数相关的知识,希望对你有一定的参考价值。
Fibonacci数
描述
无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为
F(n)=1 ...........(n=1或n=2)
F(n)=F(n-1)+F(n-2).....(n>2)
现要你来求第n个斐波纳奇数。(第1个、第二个都为1)
- 输入
- 第一行是一个整数m(m<5)表示共有m组测试数据
每次测试数据只有一行,且只有一个整形数n(n<20) - 输出
- 对每组输入n,输出第n个Fibonacci数
- 实现:
-
package July; import java.util.Scanner; public class fiobolaco { private static int num[]=new int[1000]; public static void main(String[] args) { Scanner sc=new Scanner(System.in); //System.out.println("请输入斐波拉切数列的m组测试数据:"+m); int m=sc.nextInt();//获取m组测试数据 int data[]=new int[m]; for(int i=0;i<m;i++){ data[i]=sc.nextInt(); } System.out.println("斐波拉切数列为:"); generate(num); System.out.println(); //找到指定位置在数列中的数值 for(int i=0;i<data.length;i++){ find(data[i]); } } public static void generate(int[] num){ for(int i=1;i<=30;i++){ if(i==1||i==2){ num[i]=1; }else{ num[i]=num[i-1]+num[i-2]; } System.out.print(num[i]+" "); } } public static void find(int n){ for(int i=1;i<num.length;i++){ if(i==n){ System.out.println("第"+n+"位在斐波拉切数列中的数位:"+num[i]); } } } }
递归方法:
public class fiobolaco2 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n= sc.nextInt(); System.out.println("第"+n+"位上的数为:"+fib(n)); } public static int fib(int n){ if(n==0){ return 0; }else if(n==1){ return 1; }else return fib(n-1)+fib(n-2); } }
运行结果:
以上是关于Fibonacci数的主要内容,如果未能解决你的问题,请参考以下文章
习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
[PTA]习题6-4 使用函数输出指定范围内的Fibonacci数