我似乎无法想出一个算法来解决以下问题,我尝试使用一系列for循环,但它变得太复杂了:
梯子有
n台阶,人们可以使用1步或2步的任意组合爬上梯子.有多少种方法可以让人爬上梯子?
因此,例如,如果梯子有3个步骤,这些将是可能的路径:
并为4个步骤
任何关于如何做到这一点的见解将不胜感激.另外,我在Java工作.
编辑:我确实会使用较小的n值,但知道如何管理较大的值肯定会很好.
如果我们有n个步骤并且我们一次可以上升1步或2步,则步数和爬升方式之间存在斐波纳契关系.IF和ONLY,如果我们不计算2 + 1和1 + 2不同.
但是,这不再是这种情况,并且必须添加我们添加第三个选项,采取3个步骤.我该怎么做呢?
是)我有的:
1 step = 1 way
2 steps = 2 ways: 1+1, 2
3 steps = 4 ways: 1+1+1, 2+1, 1+2, 3
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里可以找到n楼梯的路数
我得到7为n = 4和14得到n = 5我通过做它之前的所有组合的总和得到14 + 7 + 4 + 2 + 1.所以n步的方式= n-1种方式+ n-2种方式+ .... 1种方式假设我保留了所有的值.DYNAMIC编程.1 2和3步将是基本情况是正确的?