python - 我的代码正在使用递归产生逻辑错误,但我不知道如何解决它

标签 python recursion compiler-errors logic

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/

相关文章:

python - 将 Argparse 与 Google Admin API 结合使用

algorithm - 在 Haskell 中内存最有效的方法是什么?

带有时间序列的python递归矢量化

javascript - 如何使用递归创建二分查找

c++ - 编译C++错误

使用带有泛型类型接口(interface)的 Java 库时的 Scala 编译问题

python - Seaborn 热图,绘图周围没有空白

python - 如何使用 Seaborn 条形图绘制月份(按顺序)?

python - 从 Flask 应用程序发起的 Bokeh 服务器回调

c - "Error: unknown type name ..."在处理与二级 ADT 融合的一级 ADT 时。