| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 748 人关注过本帖
标题:大伙帮看看,这道题是不是给错了,我算的结果和答案不一样
只看楼主 加入收藏
赵贺辉
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:19
注 册:2011-3-18
收藏
得分:0 
回复 5楼 chenwei435
是把aa+2的地址传递给a[],我是这样理解的,这个题是我看的书上的,
2011-03-20 13:15
赵贺辉
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:19
注 册:2011-3-18
收藏
得分:0 
回复 7楼 ansic
我刚试了,答案是十八,可为什么???我笔算是12
2011-03-20 13:46
like2266
Rank: 2
等 级:论坛游民
帖 子:17
专家分:40
注 册:2011-3-19
收藏
得分:8 
答案确实是18其实这个递归展开是这样的,相当于aa[2]+aa[3]+aa[4]+aa[5];   aa+2是把aa[2]的地址传递给f函数!依此类推。就是aa[2]+aa[3]+aa[4]+aa[5];即3+4+5+6==18;答案就是18.
2011-03-20 13:55
chenwei435
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:322
专家分:1611
注 册:2010-11-28
收藏
得分:12 
此函数为递归调用函数,调用aa+2其实就是把a的地址加了2个sizeof(int ),是一个指针,   return  a[0]+f(a+1,n-1);此时的a[0]所指向的数就是3,也就是aa[2],调用一次后s=3+f(a+3,3),再次调用得s=3+4+f(a+4,2),再调用的s=3+4+5+f(a+4,1)此时调用else 后面的  return  a[0];得s=3+4+5+6=18;也就是tc 输出的结果
2011-03-20 15:25
天涯天下去
Rank: 2
等 级:论坛游民
帖 子:41
专家分:35
注 册:2010-12-2
收藏
得分:0 
编程是可以通过的就是括号的问题
答案确实是18呀

你可以调试下看下变量得存储过程啊

学无止境
2011-03-20 15:31
赵贺辉
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:19
注 册:2011-3-18
收藏
得分:0 
回复 10楼 Alar30
括号是有问题,我我输入时没用英文形式,我在电脑编译运行后答案是18,可我不懂为什么啊。。。怎么算的????
2011-03-20 21:41
赵贺辉
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:28
专家分:19
注 册:2011-3-18
收藏
得分:0 
回复 14楼 chenwei435
呵呵,一看到你的,马上就明白了,原来我把a[0]当成同一个了!!!1呵呵,谢谢啊。。。解决了一直困扰我的这个题
2011-03-20 21:48
常建华
Rank: 2
等 级:论坛游民
帖 子:16
专家分:28
注 册:2011-3-20
收藏
得分:0 
答案对呀! 就是18
 aa+2 内存地址的首地址存放的是3 然后传递给a
 就相当于啊a[0]=3 n=4
递归 调用  3+4+5+6 = 18
2011-03-20 22:47
快速回复:大伙帮看看,这道题是不是给错了,我算的结果和答案不一样
数据加载中...
 
   



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

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