题目链接:数楼梯
初始条件:f(1) = 1, f(2) = 2
关系式:f(n) = f(n-1) + f(n-2)
刚开始用的递归,发现有的数据会超时,改成递推后,不超时了但是发现输出的数据越界了,所以需要加上大数运算。
java代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n;
Scanner in = new Scanner(System.in);
n = in.nextInt();
BigInteger a,b,c;
a = BigInteger.valueOf(1);
b = BigInteger.valueOf(2);
c = BigInteger.valueOf(3);
if(n<=2) System.out.println(n);
else {
for(int i=3;i<=n;++i) {
c = a.add(b);
a = b;
b = c;
}
System.out.println(c);
}
}
}