我不知道如何完成我的代码来解决“持久性问题”。目标是创建一个名为“persistence”的函数来返回迭代次数,直到一个数的位数相乘等于一个位数。在
例如:persistence(39)=3,因为3*9=27,2*7=14,1*4=4;因此需要三次迭代。在
下面是到目前为止我的代码,我不确定从这里到哪里去,或者我所得到的是否正确。任何帮助都将不胜感激。在
def persistence(num):
num_str = str(num)
total = 1
for i in num_str:
total = total * int(i)
while len(str(total)) <> 1:
total = total * total(i)
#not sure what to do from here...
TerryA的回答非常好,当你想再次将一个函数的结果应用于同一个函数时(如本例所示),递归通常是一个非常好的主意。不过,为了完整性起见,可以使用一个简单的while循环来实现该解决方案,与您尝试的方法没有太大的不同:
计数器会记录循环运行的次数,从而给出最终答案。在
您会注意到,如果您想像对}所做的那样,您将重复代码。在这种情况下,递归可以帮助(调用函数本身):
39
到{假设输入是
39
:total
分配了一个新的号码(27)。我们通过再次调用函数来重复上面的代码,但是没有传递39,而是传递了27。在total
。在0
,因为4<;10。没有对数字4进行迭代(因此我们返回0
)递归一开始有点棘手,但基本上它是一个调用自己的函数,但它有“基本情况”来停止函数的无限期运行。在这种情况下,我们的基本情况是如果数字小于10(它有一个数字)。此数字上没有迭代。在
相关问题 更多 >
编程相关推荐