【Java实现爬楼梯问题】

【Java实现爬楼梯问题】,第1张

【Java实现爬楼梯问题】

例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。

输入包含若干行,每行包含一个正整数N,代表楼梯级数,1≤N≤30。

不同的走法数,每一行输入对应一行输出。

这道题其实是斐波那契数列。

可以不需要暴力求解,因为每一次都需要走一个或两个阶梯,由此可以得出在爬最后一个楼梯的时候有两种方式,要么是走一级,要么是走两级。例如我们走到第8个楼梯,只需要找到第7和第6个分别有多少种方法,然后再进行相加最后得出的结果就是第8个楼梯总共的走法。

我们可以再接着进行拆分。最后可以得出F(n) = F(n-1)+F(n-2) (n>=3)。

代码展示

```java

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n =sc.nextInt();
       if (n==1||n==2){
        System.out.println(n);
       }else {
         int a = 1;
         int b = 2;
         int  result= 0;
         for (int i = 3; i <= n; i++) {
              result = a + b;
              a = b;
              b = result;
         }
          System.out.println(result);
       }
     }
}

```

第一次看这道题的时候我想到的是暴力求解,一 一列举出来。后来才发现,这道题有更好的方法去做,所以有时候静下心来仔细思考一道题还是有必要的。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5703496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存