#题目:变态跳台阶(出题的人就是个变态,人家这是牛人)->一次可以跳任意台阶数,如一次跳1个台阶,2个台阶,3个台阶。。。
#因此,如果我们想要这个"变态"跳到第n个台阶的话,它有:
#"变态"跳到台阶1的跳法+"变态"跳到台阶2的跳法+"变态"跳到台阶3的跳法+...+ "变态"跳到台阶n-1的跳法 + 1(变态直接从0跳到n)
#这里的"变态"跳到1,跳到2,跳到3...的跳法,指的是它第一步跳到这里,第二步直接跳到台阶n,所以跳法总数是其跳到台阶1,台阶2,台阶3...的和
#而"变态"跳到台阶1的跳法 = 变态跳到台阶1的跳法(1:它能从台阶0跳来)
#"变态"跳到台阶2的跳法 = 变态跳到台阶2的跳法(2:它能从台阶0,台阶1跳来)
#同理,"变态"跳到台阶3的跳法 = 变态跳到台阶3的跳法(1(跳到台阶1) + 2(跳到台阶2) + 1(直接跳到3):它能从0,1,2三个台阶上跳来)
#因此,我们从"变态"它从哪来来,可以直接得到跳到台阶n的跳法数 = 跳到1 + 跳到2 + ... + 跳到n-1 + 1
import numpy as np
def JumpSteps(target):
#定义全是1的数组的意义是它代表着直接跳到n这里的一种方法
steps = np.ones(target)
for i in range(1,target):
#计算跳到n的跳法
for j in range(0,i):
steps[i] += steps[j]
print("跳到各个台阶分别对应的跳法数如下所示:")
print(steps)
#将我们需要的跳到的目标台阶target所对应的跳法数返回
#因为索引从0开始,索引目标数据在steps[target-1]
print("其中跳到第"+str(target)+"台阶对应跳法数是:")
return steps[target-1]
print("计算我们跳到第五个台阶有多少种跳法:")
print(int(JumpSteps(5)))