在谷歌搜索解决方案后,除了 C++ 和 Java,我在网上找不到任何替代方案。
我已经看到关于给定元素数组的问题,尽管在我的案例中我没有预定义数组。一个程序应该自己创建它。
问题: 我需要知道有多少 1 和 2 的组合加起来等于输入数字。
INPUT OUTPUT
1 1
3 3
5 8
如何解决?
程序应将输入数字转换为数组(N = 1 的数组),其元素总和为输入数字。然后它应该计算数组(组合)的数量。
为清楚起见
N = 1(1 个组合)
[1]
N = 2(2 种组合)
[1, 1]
[2]
N = 3(3 种组合)
[1, 1, 1]
[1, 2]
[2, 1]
N = 4(5 种组合)
[1, 1, 1, 1]
[2, 1, 1]
[1, 2, 1]
[1, 1, 2]
[2, 2]
等等
最佳答案
使用尾递归将堆栈减少到 O (1)
空间:
def fib(n):
if n in [0,1]:
return 1
return _f(1, 1, n)
def _fib(a, b, i):
if i == 1:
return a
return _f(a+b, a, i-1)
print(fib(4)) # 5
关于python - 在 Python 中使用递归将一个数字写为 1 和 2 的数组,其总和等于该数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44192488/