#include<stdio.h> int fun(int n,int *s){int f1,f2;if(n==1IIn==2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2)

#include<stdio.h>intfun(intn,int*s){intf1,f2;if(n==1IIn==2)*s=1;else{fun(n-1,&f1);fun... #include<stdio.h> int fun(int n,int *s){int f1,f2;if(n==1IIn==2)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;} return 0;void main(){int x;fun(6,&x);printf("%d\n",x);}不会,完全看不懂。标记下。这个题的求解过程详解 展开
 我来答
haoren_1984
推荐于2018-03-08 · TA获得超过162个赞
知道答主
回答量:89
采纳率:100%
帮助的人:54.8万
展开全部
这个函数是使用递归算法计算斐波纳契数列的,那个数列是这样的:
1,1,2,3,5,8,13,21。。。。。依此类推

大致解释如下,你看看吧,应该能看明白了吧。

#include<stdio.h>
int fun(int n,int *s)
{
int f1,f2;
if(n==1 || n==2) // 如果是第一个或者第二个数,他们均为1
*s=1;
else
{
fun(n-1,&f1); // 递归计算前一个
fun(n-2,&f2); // 递归计算前两个位置的
*s=f1+f2; // 数列的定义就是当前位置是前两个数字之和
}
return 0;
}

int main()
{
int x;
fun(6,&x); // 看看数列第六个位置是不是8
printf("%d\n",x);
fun(8,&x);
printf("%d\n",x);// 看看数列第8个位置是不是21

return 0;
}
微界度玺0E
2011-12-30 · TA获得超过105个赞
知道答主
回答量:56
采纳率:100%
帮助的人:49.9万
展开全部
include<stdio.h>
int fun(int n,int *s) // n = 6 , *s =3
{
int f1,f2;
if( (n==1IIn==2)*s=1 ) // 如果 n=1 或者 n=2 只要满足一个条件 第一个括号就等于1
// 否则等于0 小括号得到的值 乘与 *s 等于 1 就什么都不执行否 则就执行 else
//语句的 这是一个递归函数 讲不清楚
;
else
{
fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
return 0;
}
void main()
{
int x;
fun(6,&x);
printf("%d\n",x);
}

帮你缩进了一些格式 需要说明的事 你这道题错漏百出
看不懂是正常的 我都看不懂
例如 1、你定义X 那么 X 是多少 至少得定义0吧 2 你的If 括号里面错了 少了一个括号
如果 假设是 X=3, 括号我补充进去 那么就像我上面注释的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式