package com.lanwq.javathinking.test;
/**
* @ClassName Fibonacci
* @Description TODO 斐波那契数列
* @Author lanwenquan
* @Date 2020/3/11 11:20
*/
public class Fibonacci {
public static void main(String[] args) {
long start = System.currentTimeMillis();
System.out.println(loop(20));
long end = System.currentTimeMillis();
System.out.println("时间:" + (end - start));
}
/**
*
* 有N 步台阶,一次只能走一步或者是两步,有多少种走法
*/
public static int loop(int n) {
if (n == 1 || n == 2) {
return n;
}
// 从 n = 3 开始,最后走一步之前有两种走法;走后走两步之前有一种走法
int allBeforeMannersOneStep = 2; // 最后走一步之前走的所有步数
int allBeforeMannersTwoStep = 1; // 最后走两步之前走的所有步数
int sum = 0; // 所有的总步数
for (int i = 3; i <= n; i++) {
sum = allBeforeMannersOneStep + allBeforeMannersTwoStep;
allBeforeMannersTwoStep = allBeforeMannersOneStep;
allBeforeMannersOneStep = sum;
}
return sum;
}
}
斐波那契数列写法
最新推荐文章于 2020-11-30 08:37:15 发布