| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖
标题:关于递归调用...
只看楼主 加入收藏
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
 问题点数:0 回复次数:8 
关于递归调用...
int f(int a[],int n)
{
if(n>1) return a[0]+f(&a[1],n-1);
else return a[0];
}
main()
{
int a[]={1,2,3,4},s;
s=f(&a[0],4);
printf("%d",s);
} 麻烦那位...讲解下.是如何得来的
搜索更多相关主题的帖子: 递归 
2007-08-09 18:06
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 
答案是10

2007-08-09 18:07
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
收藏
得分:0 
int f(int a[],int n)/*定义函数*/
{
if(n>1) return a[0]+f(&a[1],n-1);/*设定递归调用函数的退出条件和继续条件*/
else return a[0];/*返回*/
}
main()
{
int a[]={1,2,3,4},s;
s=f(&a[0],4);
printf("%d",s);
}

/*
自己调试出来的结果,根据结果分析出来的
s=a[0]+a[1]+a[2]+a[3]

s=0
+a[0]+f(a[1]的地址,3)
+a[1]+f(a[2]的地址,2)
+a[2]+f(a[3]的地址,1)
+a[3]
*/

↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-09 18:27
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 

汗汗..自己解决了...


2007-08-09 18:29
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
就是10
每个首地址的元素相加!!

要练习算法就来http:///!!有挑战哦!!
2007-08-09 18:30
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 
3楼...怎么调试啊? 你用什么编的?

2007-08-09 18:31
y218z903
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-7-27
收藏
得分:0 
3楼,,我看上你了...加个QQ怎么样? 我的是84841136

2007-08-09 18:32
leeldy
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-8-2
收藏
得分:0 
用win-tc啊,自己添加几条现实语句,添加几条暂停语句更加容易分析

↑↑↑↑↑↑↑↑如果我错了,请改正我的错误↑↑↑↑↑↑↑↑

2007-08-09 18:32
AQcdr
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2004-8-22
收藏
得分:0 

这道题关键在于,其递归时 后一次 函数中 a[0],为前一次实参的地址


------------------------------------------------ 阿庆AQcdr
2007-08-09 18:42
快速回复:关于递归调用...
数据加载中...
 
   



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

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