def k_comp(n):
n_new = 0
if n == 0:
n_new = 2
if n == 1:
n_new == 1
if n > 1:
n_new = (k_comp(n-1) + k_comp(n-2))**2
return n_new
def Kseq(start, stop, step):
""" (int,int,int) -> list of integers
Kseq(0,6,1)--->
[2, 1, 9, 100, 11881, 143544361]
Kseq(2,6,2)---->
[9, 11881]
"""
final_list = []
append_this = 0
for i in range (start,stop,step):
append_this = k_comp(i)
final_list.append(append_this)
return final_list
print(Kseq(0,6,1))
而不是预期的输出,它打印:[2,0,4,16,144,16384]
该代码应该这样做:
输入:此函数传递定义数字序列的开始(> = 0),停止(> start)和步进(> = 1)值。
输出:此函数返回相应K序列的列表。
第k个序列为k(n)=(k(n-1)+ k(n-2))^ 2
最佳答案
您在k_comp中混合了分配和相等性
你有:
if n == 1:
n_new == 1
你应该有:
if n == 1:
n_new = 1
单个“=”表示将右侧的值分配给左侧的变量。
双'=='表示左值和右值相等。在这种情况下,它将不存在,因此不相等,因此为False。 False是有效的python语句;它只是不会做您期望的。
关于python - 我的代码正在使用递归产生逻辑错误,但我不知道如何解决它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55252298/