| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3149 人关注过本帖
标题:[求助]用递归法调用求一整型数组的平均值 错在哪儿?
取消只看楼主 加入收藏
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
结帖率:88.89%
收藏
 问题点数:0 回复次数:3 
[求助]用递归法调用求一整型数组的平均值 错在哪儿?

以下是一个用递归法调用求一整型数组的平均值,我没有看懂 return ((float)(n*f(n-1)+a[n])/(n+1));
错在哪儿? 把它放在Turboc2.0中验证,结果错了:f(10)=944.182 。书上说正确的答案是f(10)=4 。请高手指教啊。


#include<stdio.h>
int a[]={0,1,2,3,4,5,6,7,8,9};

float f(int n)
{
if(n==1)
return a[0];
else
return ((float)(n*f(n-1)+a[n])/(n+1));
}

main()
{
int n=10;
printf("f(%d)=%g\n",n,f(n));
getch();
}

搜索更多相关主题的帖子: 整型 平均值 递归 
2007-04-22 17:41
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
谢谢,我也试验了,结果正确.是不是把a[0]强制转化为float型啊?
但是我始终看不明白return ((float)(n*f(n-1)+a[n])/(n+1));是怎么样递归的啊?

谢谢了.
2007-04-23 18:05
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
return ((float)(n*f(n-1)+a[n])/(n+1)) 为什么会是n+1呢?
2007-04-28 18:36
laigaoat2005
Rank: 4
等 级:业余侠客
帖 子:388
专家分:226
注 册:2007-4-5
收藏
得分:0 
可是我的机子打印出来是4啊.我主要是对这个递归公式不明白,它到底是怎样递归的啊?
如果说n=9,我就明白了,可是转过头又想,n不是数组的个数吗?个数为10,而n=9,我想这样是不是容易给使用都带来麻烦啊?谢谢了.
2007-04-28 22:30
快速回复:[求助]用递归法调用求一整型数组的平均值 错在哪儿?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016041 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved