我正在编写一个递归函数,它以一个数字作为输入,并根据输入返回一个字符串。你知道吗
这是我的密码:
def sum_power2( n ):
n_int = int( n )
if n_int == 0:
return '1'
else:
return sum_power2( n_int * '(1 + 1)' )
最初,该代码导致的错误代码为
can't multiply sequence by non-int of type 'str'
当n没有被转换成int时,现在我得到了这个错误代码。请帮我弄清楚,谢谢!你知道吗
对于和功率2(2)的和输入,输出应为'((1+1)(1+1))'
>>> sum_power2(2) '(1 + 1)(1 + 1)'
您的错误发生是因为您调用了
sum_power2( n_int * '(1 + 1)' )
。你知道吗看起来您的主要问题是试图将
int
和string
的组合输入到需要int
的递归函数。要使递归函数工作,您需要将原始问题简化为基本情况和退出。
我只是把n减少到1,然后退出并连接我们的结果,在命中基本情况时返回。你知道吗
如果这是你要找的,告诉我。你知道吗
**编辑**
工作代码: 定义总功率2(n):
打印总功率2(2)
结果:
如果我正确理解了这个问题,您希望sum\u power2(n)返回n个字符串副本(1+1),是吗?你知道吗
在这种情况下,递归方法是,对于n>;1,将字符串(1+1)附加到sum\u power2(n-1)的输出。(这将需要一个特例,当n=0时仅给出1)
看起来是这样的:
(另外,看起来你的参数是int,所以我省略了转换)
相关问题 更多 >
编程相关推荐