| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 721 人关注过本帖
标题:问题2:`下列程序的运行结果怎么是15?请讲解过程!
只看楼主 加入收藏
iqyuankong
Rank: 2
等 级:论坛游民
帖 子:68
专家分:10
注 册:2009-10-23
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:6 
问题2:`下列程序的运行结果怎么是15?请讲解过程!
问题2:`下列程序的运行结果怎么是15?请讲解过程!
     int f(int a[], int n)
     {
       if(n>=1) return f(a,n-1)+a[n-1];
       else     return 0;
      }
      main()
     {
       int aa[5]={1,2,3,4,5}, s;
       s=f(aa, 5);
       printf("%d\n",s);
     }
搜索更多相关主题的帖子: 运行 结果 讲解 
2010-01-23 19:39
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
    if(n>=1) return f(a,n-1)+a[n-1];
       else     return 0;
      
return 10+a[5-1];
return 6+a[4-1];
return 3+a[3-1];
return 1+a[2-1];
return 0+a[1-1];
return 0;                       递归调用            









2010-01-23 20:16
burningbebe
Rank: 2
等 级:论坛游民
帖 子:41
专家分:19
注 册:2009-10-31
收藏
得分:0 
哥么你绝得应该是多少
是不是10啊
我想你是不是犯了个小店错误 a【】是从a【0】开始的
这是我猜的 如果是以后就小心了 我也是初学者 大家一起努力

世界上最遥远的距离不是生与死,而是网通和电信!
2010-01-23 21:07
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
收藏
得分:0 
唉,我也看错了,
正确的应该是a[4]=5,a[3]=4,...a[0]=1;
唉,唉
2010-01-24 03:00
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:20 
递归调用,就嵌套调用函数自身!
执行过程:

f(a,5)=f(a,4)+a[4]; //开始调用
f(a,4)=f(a,3)++a[3];
f(a,3)=f(a,2)++a[2];
f(a,2)=f(a,1)++a[1];
f(a,1)=f(a,0)++a[0];
f(a,0)=0; //开始返回
f(a,1)=0+1;
f(a,2)=1+2;
f(a,3)=3+3;
f(a,4)=6+4;
f(a,5)=10+5;





[ 本帖最后由 cnfarer 于 2010-1-24 16:25 编辑 ]

★★★★★为人民服务★★★★★
2010-01-24 16:23
Devon_Ye
Rank: 4
来 自:广东
等 级:业余侠客
帖 子:124
专家分:282
注 册:2010-1-7
收藏
得分:0 
int f(int a[], int n)
     {
       if(n>=1) return f(a,n-1)+a[n-1];
       else     return 0;
      }
      main()
     {
       int aa[5]={1,2,3,4,5}, s;
       s=f(aa, 5);
       printf("%d\n",s);
     }

程序从main函数开始执行;
1)s=f(aa,5);
   调用函数f,s=f(aa,4)+a[4];
2) s=f(aa,3)+a[4]+a[3]
.
.
.
5)s=a[0]+a[1]+a[2]+a[3]+a[4]=15
 
2010-01-25 15:24
huangpubo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-1-24
收藏
得分:0 
直接看到main语句中,aa[5],表示为一个数组,有五个元素,遇到了s=f(aa,5),表示开始做f函数,跳到f函数中,由题知道n=5,满足if语句,则return f(a,4)+5,再做f(a,4)函数,n也满足if语句则再次return f(a,3)+4,由此最后的结果为return 5+4+3+2+1=15
2010-01-25 17:08
快速回复:问题2:`下列程序的运行结果怎么是15?请讲解过程!
数据加载中...
 
   



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

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