最近面试 的时候遇到的,记个笔记。
/**
* 斐波那契数列
* //0 1 1 2 3 5 8 13 21 34
* f(n) = f(n-2)+f(n-1)
*/
public class Fibonaccisequence {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入有几阶楼梯:");
short i = scanner.nextShort();
Fibonaccisequence fibonaccisequence = new Fibonaccisequence();
Short kinds = fibonaccisequence.kinds((short) i);
System.out.println("一共有"+kinds+"种走法");
}
private Short kinds(short i){
//f(n)=f(n-1)+f(n-2)
//将斐波那列数放入一个有序链表中
List<Short> list = new ArrayList<Short>();
int m;
if (list.isEmpty()){
list.add((short) 0);
list.add((short) 1);
}
//从下标等于2开始循环
for ( m = 2 ;m<=i+1;m++){
list.add( (short) (list.get(m - 2) + list.get(m - 1)));
}
return list.get(m-1);
}
}
运行结果:
Connected to the target VM, address: '127.0.0.1:63097', transport: 'socket'
请输入有几阶楼梯:
4
一共有5种走法