gpt4 book ai didi

python - 链的节点中的每个值都是由前一个值加上前一个值的数字之和计算得出的

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:13 24 4
gpt4 key购买 nike

我对这类事情很陌生,我正在尝试寻找如何计算一个函数,该函数采用两个整数值、起始值和链中总共应该有多少个节点。节点链中的每个值都是由前一个值加上前一个值的位数的总和计算得出的。例如:

(409, 5)

会生成一个链

409
422
430
437
451

我现在的代码:

class Node:
def __init__(self, init_data):
self.data = init_data
self.next = None

def get_data(self):
return self.data

def get_next(self):
return self.next

def set_data(self, new_data):
self.data = new_data

def set_next(self, new_next):
self.next = new_next

def __str__(self):
return str(self.data)

def generate_chain(start, n):
node = Node(start)
current = start
string_of_nodes = str(start)
list_of_nodes = []
print(current)
for digit in string_of_nodes:
list_of_nodes.append(int(digit))
for i in range(n-1):
node.set_next(sum (int(a) for a in list_of_nodes) + int(current))
current += (node.get_data())
print(current)

生成输出:

409
818
1227
1636
2045
2454

我想知道是否有人可以帮我找出我的错误并指导我正确的方法。谢谢。

最佳答案

使用 Node 类的替代实现如下:

def generate_chain(start, n):
head = node = Node(start)
for _ in range(n):
sum_of_digits = 0
v = node.get_data()
while v > 0:
sum_of_digits += v % 10
v //= 10

node.set_next(Node(node.get_data() + sum_of_digits))
node = node.get_next()

node = head
while node:
print(node.get_data())
node = node.get_next()

此代码创建一个节点链,然后打印。原始代码中的问题似乎是链没有正确构建,因为 set_next 是用 int 而不是 Node 调用的。

关于python - 链的节点中的每个值都是由前一个值加上前一个值的数字之和计算得出的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com