一道C语言题目

longfib(intg){switch(g){Case0:return0;case1:case2:return1;}return(fib(g-1)+fib(g-2));... long fib(int g)

switch(g)

Case 0: return 0;
case 1:
case 2: return 1;

return(fib(g-1)+fib(g-2));

main()
{
long k;
k=fib(7);
printf("k=%ld\n",k);

【提示】注意函数递归调用的条件。
【解答】k=13

为什么k=13呢? 详细解答一下 谢谢
展开
 我来答
uniqueCNL
2012-12-25 · TA获得超过711个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:237万
展开全部
就是个斐波那契数的列递归解法啊,k项==k-1项与k-2项的和。你可以展开函数慢慢算。。。
fib(0)==0, fib(1)==1,fib(1)==1,fib(3)==fib(1)+fib(2)
0,1,1,2,3,5,8,13...
fib(7)= fib(6)+fib(5)
=fib(5)+fib(4)+fib(4)+fib(3)
=fib(4)+fib(3)+...
hhqq005
2012-12-27 · TA获得超过171个赞
知道小有建树答主
回答量:354
采纳率:0%
帮助的人:123万
展开全部
无聊的人出的无聊的题目。
手工演算一次,找出规律(或者从判断条件及运算推演出规律)不就行了。
重复计算不就是计算机的强项吗?快、不会出错、同样的条件肯定能得到同样结果。
这题目到底考核什么能力呢?算法设计能力还是代码分析能力?还是只是为了学会用递归?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zdk66
2012-12-25 · 超过10用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:22.1万
展开全部
函数递归调用:fib(7)=fib(6)+fib(5);然后再调用fib函数,求出fib(6)=fib(5)+fib(4),fib(5)=fib(4)+fib(3);以此类推,最后求出fib(1),fib(2)的值,就可以算出fib(3),fib(4),直到fib(7);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式