|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 饭-米粒 于 2022-2-18 19:17 编辑
有什么其他办法输出每个方法的序列么,想了好久,不知道用什么办法
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
注意:最好输出上楼的步骤
- #网上找的
- def tree(traget):
- if traget == 0:
- return 1
- if traget == 1:
- return 1
- return tree(traget-1)+tree(traget-2)
- #print(tree(5))
- #自己写的
- a=[]
- def tree2(traget,a):
- if traget <0: #多操作,此数据无效
- return False
- elif traget == 0: #正好上完,打印上楼序列
- print(a)
- else:
- for i in [1,2]: #用上1级和2级循环试验
- s=a[:]
- s.append(i) #将上的楼梯数填入列表
- tree2(traget-i,s) #剩余的楼梯,继续爬
- tree2(5,a)
复制代码
运行结果:
[1, 1, 1, 1, 1]
[1, 1, 1, 2]
[1, 1, 2, 1]
[1, 2, 1, 1]
[1, 2, 2]
[2, 1, 1, 1]
[2, 1, 2]
[2, 2, 1]
我这写的算递归吗?像穷举的意思
大佬们有什么好办法输出上楼梯的序列吗?
sorry,没关注到重点,这里是想输出上楼的序列,用递归的话,试下这样
- def tree(result,way,target):
- if target == 0:
- result.append([*way])
- return result
- if target == 1:
- way.append(1)
- result.append([*way])
- return result
- tree(result,[*way,1],target-1)
- tree(result,[*way,2],target-2)
- return result
- print(tree([],[],5))
复制代码
|
|