递归求解
这个因为要反复调用自己,所以时间很长,来到50的时候就要等好几秒才出结果,java还好了,同样的代码,python算38的时候就要等好久。
代码语言:javascript复制import java.util.Scanner;
public class studying {
private static long fibonacci(int n){
if(n==1||n==2)
return 1;
return fibonacci(n-1) fibonacci(n-2);
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
System.out.println(fibonacci(n));
}
}
递推求解
这个不用反复调用函数,可算到Java能表示的最大整数为止。
代码语言:javascript复制import java.util.Scanner;
public class studying {
private static long fibonacci(int n){
if(n==1||n==2)
return 1;
long a=1,b=1,temp=2;
for(int i=3;i<=n;i ){
temp=a b;
a=b;
b=temp;
}
return temp;
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
System.out.println(fibonacci(n));
}
}