使用递归减少数字的位数
Using recursion to reduce digits of a number
我正在应对编码挑战,我正在使用这个问题来让自己习惯递归。问题给了我一个任意长度的整数 n,我的工作是对所有数字求和,直到它变成一个数字,然后输出发生的次数。
为了说明,假设值为 87559:
8+7+5+5+9 = 34
3 + 4 = 7
所以 return 值为 2。如果 n 为 1,000,000
,则 return 将为 1。
我觉得这是一个递归问题,所以我试图让那部分先工作。这是我的代码:
def digitDegree(n):
return digitDegree(sum(map(int, str(n)))
然而,这是错误的:
Traceback (most recent call last):
main.py3 in the pre-written template, in getUserOutputs
userOutput = _runlnlao(testInputs[i])
main.py3 in the pre-written template, in _runlnlao
return digitDegree(*_fArgs_qeqrszlgdnyi)
main.py3 on line 13, in digitDegree
return digitDegree(sum(map(int, str(n))))
main.py3 on line 13, in digitDegree
return digitDegree(sum(map(int, str(n))))
main.py3 on line 13, in digitDegree
return digitDegree(sum(map(int, str(n))))
[Previous line repeated 9993 more times]
RecursionError: maximum recursion depth exceeded while getting the str of an object
这就是为什么您总是从基本情况开始:您必须在某处停止递归。回到递归的基础知识:
- 你怎么知道什么时候完成的?
- 你 return 在那个基本情况下是什么?
- 当您从递归步骤返回到其父级时,您需要积累哪些信息?
这三个项目将帮助您找到解决方案。
编码留给学生作为练习。 :-)
你可以这样做 & 'times' 会显示递归发生的次数
def recurtion_function(x):
global times
times += 1
num = 0
while x != 0:
num += x % 10
x = x // 10
if num > 10:
recurtion_function(num)
var = int(input("enter the number:"))
times = 0
recurtion_function(var)
print(times)
我正在应对编码挑战,我正在使用这个问题来让自己习惯递归。问题给了我一个任意长度的整数 n,我的工作是对所有数字求和,直到它变成一个数字,然后输出发生的次数。
为了说明,假设值为 87559:
8+7+5+5+9 = 34
3 + 4 = 7
所以 return 值为 2。如果 n 为 1,000,000
,则 return 将为 1。
我觉得这是一个递归问题,所以我试图让那部分先工作。这是我的代码:
def digitDegree(n):
return digitDegree(sum(map(int, str(n)))
然而,这是错误的:
Traceback (most recent call last):
main.py3 in the pre-written template, in getUserOutputs
userOutput = _runlnlao(testInputs[i])
main.py3 in the pre-written template, in _runlnlao
return digitDegree(*_fArgs_qeqrszlgdnyi)
main.py3 on line 13, in digitDegree
return digitDegree(sum(map(int, str(n))))
main.py3 on line 13, in digitDegree
return digitDegree(sum(map(int, str(n))))
main.py3 on line 13, in digitDegree
return digitDegree(sum(map(int, str(n))))
[Previous line repeated 9993 more times]
RecursionError: maximum recursion depth exceeded while getting the str of an object
这就是为什么您总是从基本情况开始:您必须在某处停止递归。回到递归的基础知识:
- 你怎么知道什么时候完成的?
- 你 return 在那个基本情况下是什么?
- 当您从递归步骤返回到其父级时,您需要积累哪些信息?
这三个项目将帮助您找到解决方案。
编码留给学生作为练习。 :-)
你可以这样做 & 'times' 会显示递归发生的次数
def recurtion_function(x):
global times
times += 1
num = 0
while x != 0:
num += x % 10
x = x // 10
if num > 10:
recurtion_function(num)
var = int(input("enter the number:"))
times = 0
recurtion_function(var)
print(times)