纠结很久的C语言函数题~~求好心高手详细点拨!!!追加悬赏!!

#include<stdio.h>intfun(intn,int*s){intf1,f2;if(n==1||n==2)*s=1;else{fun(n-1,&f1);fun... #include <stdio.h> int fun(int n,int *s) { int f1,f2; if (n==1||n==2) *s=1; else { fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2;} } main() { int x; fun(6,&x); printf("%d\n",x); } 输出结果是_______ 展开
 我来答
百度网友aba7e1ea1a4
2020-01-21 · TA获得超过3775个赞
知道大有可为答主
回答量:3207
采纳率:32%
帮助的人:165万
展开全部
输出答案为8
此为求斐波那契数列第n项的程序
首先值得注意的是fun函数有一个形参为指针变量,也就是地址传递,这种情况下调用的程序如果对形参进行了修改,返回后相应变量的值也会被修改。这个函数就是利用了指针的这一特性。这个函数虽然是void型不返回数值,却用*s这个指针变量传递着运算结果。
注意*s为指针运算,表示对s所指的变量进行存取等运算操作。
if
(n==1||n==2)
*s=1;表示这个数列第一项
第二项均为1
接下来的else语句中fun(n-1,&f1);表示将数列第n-1项运算的结果保存在f1变量中,fun(n-2,&f2);表示将数列第n-2项运算的结果保存在f2变量中,也许你会疑惑:你怎么知道这个形参是用来传递运算结果的?接下来的一句话说明了一切:*s=f1+f2;也就是说,这里数列的第n项为前面两项的数值和。
综上,此为求斐波那契数列第n项的程序
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式