首页新闻找找看学习计划

递归求平均值

0
[已解决问题] 解决于 2019-12-18 23:04

float arrayavg(float A[],int n){
if(n==0)
return A[n];
else
return (A[n]+arrayavg(A,n-1))/(n+1);
}
请问一下这样哪里错了啊,请教一下大佬,感谢感谢

小鸭子嘻嘻哈哈的主页 小鸭子嘻嘻哈哈 | 初学一级 | 园豆:194
提问于:2019-11-18 23:32
< >
分享
最佳答案
0

递归,如果你无法已开始就实现高级想象能力的话,也很简单。
那就是代入法,你把N=5代入,把递归拆解开来,一步步拆开,看看。
你这个的问题是
1、数组本身带有长度,不需要你提供n,n是多余的。
2、任何时候都是两个数字求平均数,除以N+1显然错了。

奖励园豆:5
爱编程的大叔 | 高人七级 |园豆:30089 | 2019-11-19 07:53

谢谢我知道了

小鸭子嘻嘻哈哈 | 园豆:194 (初学一级) | 2019-11-19 08:58
其他回答(2)
0
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)
会长 | 园豆:6359 (大侠五级) | 2019-11-19 09:21
0

else后面是return (A[n]+n*arrayavg(A,n-1))/(n+1)才对

Arthurian | 园豆:923 (小虾三级) | 2019-12-01 08:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册