python - 查找数字的数字根
问题描述
我试图实现找到一个数字的数字根的函数(它是一个数字中所有数字的递归总和。)但由于某种原因,如果函数对自身进行递归调用,它会返回 none
import functools
def digital_root(n):
r=functools.reduce(lambda x,y:int(x)+int(y),list(str(n)));
if r//10<1:
return r
else:
digital_root(r)
解决方案
您没有在 else 子句中返回任何值,因此它给出了 None
def digital_root(n):
r=functools.reduce(lambda x,y:int(x)+int(y),list(str(n)));
if r//10<1:
return r
else:
return digital_root(r)
更易读的形式是:
def root(n):
d_sum = 0
for i in str(n):
d_sum += int(i)
if dsum<10:
return d_sum
return root(d_sum)
没有递归:
def root(n):
while n > 9:
n = sum(map(int, str(n)))
return n
推荐阅读
- java - 静态注释和非静态注释有什么区别?
- c# - 客户端服务器套接字 C# 通信
- python - 使用带有机器人框架的 python 根记录器
- regex - 使用 powershell/regex 选择块文本(第 vty 0 4 行)
- bash - 多行时如何用分隔符分隔文本?
- graphql - 通过查询传递令牌?
- selenium - Katalon 执行嵌套的 Selenium WebDriver 发现
- arrays - How to create a set of Normally distributed numbers in go-lang, set around a specific number
- html - contenteditable div 中的 hr 接受文本
- java - JavaFX,primaryStage.show()之后的代码,怎么样?