| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 369 人关注过本帖
标题:求解释,本人对于此题相当混乱!(初学者)
只看楼主 加入收藏
戈壁滩
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-6
结帖率:33.33%
收藏
已结贴  问题点数:5 回复次数:4 
求解释,本人对于此题相当混乱!(初学者)
下列程序的输出结果是()。
int fun(int *x,int n)
{if(n==0)  return x[0];
else return x[0]+fun(x+1,n-1);
}
main()
{int a[]={1,2,3,4,5,6,7};
printf("%d\n“,fun(a,3));}
   


结果为 10;求具体算法。
搜索更多相关主题的帖子: return 算法 
2012-03-06 11:25
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:3 
又是一个递归函数.
假设a的值不变的方式模拟整个递归过程
fun(a,3)
运行状态是  a[0]+fun(a+1,3-1)

fun(a+1,3-1)
运行状态是 a[1]+fun(a+2,2-1)

fun(a+2,2-1)
运行状态是 a[2]+fun(a+3,1-1)

fun(a+3,1-1)
运行状态是 a[3]

递归以后结果是:a[0]+a[1]+a[2]+a[3]=10


2012-03-06 12:05
戈壁滩
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-3-6
收藏
得分:0 
回复 2楼 share32
意思是每次a[0]+fun(a+1,n-1)返回a[0],但是因为指针后移,所以实际返回了a0,a1,a2,a3   然后把这4个数加起来 大概是这个意思吗?

[ 本帖最后由 戈壁滩 于 2012-3-6 13:04 编辑 ]
2012-03-06 12:58
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:3 
回复 3楼 戈壁滩
也对,就是每次执行return里边的表达式a[0]+fun(x+1,n-1),直到return得到一个确定的值

最基础的往往是你最容易忽略的!
2012-03-06 13:41
share32
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:214
专家分:663
注 册:2011-12-1
收藏
得分:0 
回复 3楼 戈壁滩
对,x+1 ,就是指针后移一位.
2012-03-06 16:59
快速回复:求解释,本人对于此题相当混乱!(初学者)
数据加载中...
 
   



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

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