重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
fib他是写了一个函数--FIBONACCI函数
华亭网站建设公司成都创新互联公司,华亭网站设计制作,有大型网站制作公司丰富经验。已为华亭上千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的华亭做网站的公司定做!
它是一个递归函数
不懂可以去百度上搜一下
这个你可以看懂吧?
Fib(int n)
{
if(n=2)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
你取 n=4,则return Fib(3)+Fib(2) -- Fib(3)=Fib(2)+Fib(1) -- Fib(2)=1 Fib(1)=1
-- Fib(3) = 2 所以n=4时,返回的值就是 3,它就是一种递归的算法,老师也是教你们学习递归用的,斐波那契函数。
int fib(n)
{
if(n1)return 0;
if(n==1 || n == 2)return 1;
return fib(n-1) + fib(n-2);
}
n==1||n==2的时候才会给前两项赋值?请仔细思考一下初始条件.
贴一个我的fib(int)函数.
int fib(int n) {
int a(1), b(1);
for (int i = 3; i = n; ++ i) {
int c(a + b);
a = b;
b = c;
}
return b;
}
斐波那契数列为:0,1,1,2,3,5,8,13.....
/*你的程序*/
#includestdio.h
int fib(int n,int f)
{
if(n==1n==2) /*n不可能同时等于1和2,所以递归无终点,会一直递归下去。*/
{f=1;} /*正确的斐波那契数列是n==1时f=0,n==2时f=1*/
else
{f=fib(n-1,f)+fib(n-2,f);}
return f;
}
int main()
{
int n,f; /*n没有赋初始值*/
f=fib(n,f);
printf("%d",f);
return 0;
}
/*改正后的程序*/
#includestdio.h
int fib(int n,int f)
{
if(n==1)
{
f=0;
}
else if(n==2)
{
f=1;
}
else
{
f=fib(n-1,f)+fib(n-2,f);
}
return f;
}
int main()
{
int n,f;
scanf("%d,%d",n,f);
f=fib(n,f);
printf("%d",f);
return 0;
}
fib(int n)严格来说根本就是错误的或不标准的东西,应该写成int fib(int n),它表示一个函数,函数返回整数值,接收一个整形参数。