Python递归函数,用于返回数字中数字的平均值
我试图创建一个递归函数,返回数字中数字的平均值。例如,数字123的平均值为2。我知道如何编写一个数字求和的函数,但不使用,因为我无法返回数字来除以函数。 打印值无法更改,因此我无法传递数字或类似数字Python递归函数,用于返回数字中数字的平均值,python,recursion,Python,Recursion,我试图创建一个递归函数,返回数字中数字的平均值。例如,数字123的平均值为2。我知道如何编写一个数字求和的函数,但不使用,因为我无法返回数字来除以函数。 打印值无法更改,因此我无法传递数字或类似数字 def media(x): if x<1: return 0 else: return x%10+media(x//10) print(media(91234)) def介质(x): 如果为-循环使用一个 没有理由不为此使用for-循环 def介质(x): 如果x=
def media(x):
if x<1:
return 0
else:
return x%10+media(x//10)
print(media(91234))
def介质(x):
如果为
-循环使用一个
没有理由不为此使用for
-循环
def介质(x):
如果x==0:
返回0
其他:
数字=[]
当x>0时:
数字。追加(x%10)
x=x//10
返回和(位数)/长度(位数)
如果你坚持递归
您可以使用其他累加器参数来存储位数和位数:
def介质(x,sumSoFar=0,nDigitsSoFar=0):
如果x==0且sumSoFar==0:
返回0
elif x==0:
返回sumSoFar/nDigitsSoFar
其他:
返回媒体(x//10,sumSoFar+(x%10),Ndigitsofar+1)
请注意,python是递归最差的语言之一,尤其是它没有优化尾部调用
作弊:让python处理到字符串的转换
内置函数str
将整数转换为一串数字。您可以将其与ord
结合使用,以获取数字的值:
def介质(x):
s=str(x)
s中c的返回和((ord(c)-ord('0'))/len(s)
我假设它是平均值,而不是中位数,就像你写的那样。要找到数字的平均值,您可以将数字转换为类型str
,然后通过使用对字符串进行迭代来提取每个数字,以便。。。在字符串中
。接下来,将每个数字转换回来,并找到这些数字的平均值
编辑:它不是递归的,但对这种简单的计算使用递归似乎没有意义。为什么不使用进行?可以使用两个函数。一个只对数字求和,另一个进行最后除法。感谢您的回复!是的,这就是问题所在,因为我可以做到,但只有使用递归方法我才能做到。