Python递归函数,用于返回数字中数字的平均值

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=

我试图创建一个递归函数,返回数字中数字的平均值。例如,数字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==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
,然后通过使用
对字符串进行迭代来提取每个数字,以便。。。在字符串中
。接下来,将每个数字转换回来,并找到这些数字的平均值


编辑:它不是递归的,但对这种简单的计算使用递归似乎没有意义。

为什么不使用
进行
?可以使用两个函数。一个只对数字求和,另一个进行最后除法。感谢您的回复!是的,这就是问题所在,因为我可以做到,但只有使用递归方法我才能做到。