问题描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39
知识拓展:递归的一个简单定义:当函数直接或者间接调用自己时,则发生了递归。
递归构造包括两个部分:
定义递归头:什么时候不调用自身方法,如果没有头,将陷入死循环
递归体:什么时候需要调用自身方法。
问题分析:斐波那契数列:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
最直观的想法就是利用函数的递归来做。另一种方法是定义三个变量,利用交换的概念。
代码实现:
public class Demo1 {
public int Fibonacci(int n) {
//方法一:该方法利用交换的概念
/*int result[] = { 0, 1 };
if (n < 2) {
return result[n];
}
int f0 = 0;
int f1 = 1;
int f2 = 0;
for (int i = 2; i <= n; i++) {
f2 = f1 + f0;
f0 = f1;
f1 = f2;
}
return f2; */
//方法二:该方法使用的是递归的概念
int result;
if(n<=0){
return 0;
}else if(n==1||n==2){
return 1;
}else{
result = Fibonacci(n-1)+Fibonacci(n-2);
}
return result;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数n(n<=39):");
int a = scanner.nextInt();
Demo1 demo1 = new Demo1();
int res = demo1.Fibonacci(a);
System.out.println(res);
scanner.close();
}
}
输出结果:
请输入一个整数n(n<=39):
10
55