提示如下: 根据以下规则构造一个数字三角形:
我的答案是:第一个函数处理第四个要求,它将一个数字的数字相加,直到只有一个数字。示例:123=1+2+3=6。第二个函数采用s(起始值)、d(增量)和r(行数)。它创建boxnum,它是三角形中框的总数,以及必须将增量添加到上一个值的次数。如果r=99999,整个代码将循环那么多次,它将超过时间限制,这是我的问题。我在存储方面也有问题,因为每个值都被追加到列表中,而实际上我只需要最后一行。我不知道如何重新编写和减少我的代码
def multidigit(x):
numsum = 0
if x < 9:
return(x)
else:
for number in str(x):
numsum += int(number)
if numsum > 9:
return(multidigit(numsum))
else:
return(numsum)
def sumOfLastRow(s, d, r):
rowslist = []
rowslist.append(multidigit(s))
incrementnum = s
boxnum = 0
for i in range(r+1):
boxnum = boxnum + i
for i in range(boxnum-1):
incrementnum = incrementnum + d
if incrementnum > 9:
incrementnum = multidigit(incrementnum)
rowslist.append(incrementnum)
splitlist = rowslist[-r:]
rowslist.clear()
total = 0
for i in range(len(splitlist)):
total = total + splitlist[i]
return(total)
这看起来不对。 可能您是从x==9的情况下的无限循环错误开始的, 然后在最后的
else
上钉上大头钉,把它盖住。 我打赌你想要要简单得多
在计算
total
时,可以使用类似的习惯用法这里不需要循环,因为二次闭式解是可用的。 https://dev.to/alisabaj/the-gauss-sum-and-solving-for-the-missing-number-996
相关问题 更多 >
编程相关推荐