float arrayavg(float A[],int n){
if(n==0)
return A[n];
else
return (A[n]+arrayavg(A,n-1))/(n+1);
}
请问一下这样哪里错了啊,请教一下大佬,感谢感谢
递归,如果你无法已开始就实现高级想象能力的话,也很简单。
那就是代入法,你把N=5代入,把递归拆解开来,一步步拆开,看看。
你这个的问题是
1、数组本身带有长度,不需要你提供n,n是多余的。
2、任何时候都是两个数字求平均数,除以N+1显然错了。
谢谢我知道了
def avg(nums: list)->float:
return __avg(nums, len(nums) - 1)
def __avg(nums:list, n:int)->float:
if n == 0:
return nums[0]
return (__avg(nums, n - 1) * n + nums[n]) / (n + 1)
if __name__ == "__main__":
l = [1,2,3]
avg = avg(l)
print(avg)