import java.util.Scanner;
public class curision {
public static int method(int n){
if (n == 1||n == 0)
return 1;
else
return method(n-1)+method(n-2);
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
curision Cursion = new curision();
System.out.println("请输入你要求取的第几个斐波那契数列:");
String num = scanner.nextLine();
int a = Integer.parseInt(num);
System.out.println("所求的值为"+Cursion.method(a));
}
}
斐波那契递归求法,在其中碰到了一个问题是因为缺少了
Scanner scanner = new Scanner(System.in);
,而是直接
String num = Scanner.nextLine();
错误是:
Error:(13, 29) java: 无法从静态上下文中引用非静态 方法 nextLine()
.
1:增加Scanner类的scanner对象;
2:将“Scanner”改为“scanner”。
进行以上改进以后:正确输出结果:
请输入你要求取的第几个斐波那契数列:
20
所求的值为10946
Process finished with exit code 0
递归方法虽然易于理解,但是时间复杂度是(2**n)。时间过长只能算前几位数字。