我正在尝试使用以下规范解决CodeWars上的问题:
“编写一个持久性函数,该函数接受一个正数num并返回其乘性持久性,这是必须将num中的数字相乘直到达到一位为止的次数。”
我的解决方法如下:
def persistence(n,count = 0):
n = list(str(n))
if len(n) <= 1 :
count = 0
return count
else :
num_per = 1
for i in n :
num_per = num_per * int(i)
num_dump = num_per
if len(str(num_dump)) > 1:
count += 1
n = num_per
persistence(n,count)
else:
count = count + 1
return count
当我选择一个多于一个数字的数字时,我得到的返回值为“无”。我将问题缩小到第二个else子句中的最后一个return语句。计数数量已正确计算,但return语句仍返回值'None'。任何帮助将不胜感激。
答案 0 :(得分:0)
只需在您的坚持行之前添加收益:
recyclerview
答案 1 :(得分:0)
与@jasonharper的建议不同,您的函数具有 if / else 语句,该语句由 len(n)<= 1 决定。如果 n 的长度小于1,则返回 count (为0)。
但是,在您的 else 语句中,您还有另一个 if / else 语句。在由 len(str(num_dump))> 1 决定的 if 语句中,您决定递归调用同一函数,但是不返回任何值。因此,您的程序很可能会进行很多递归调用,但是无法存储要在程序末尾返回的值。
这可以通过替换
来解决持久性(n,计数)
使用
返回持久性(n,计数)