利用函数求解
#include<stdio.h>
#include<stdlib.h>
int fabonacci(int n
)
{
int f1
= 1;
int f2
= 1;
int i
= 0, f3
= 1;
for (i
= 3; i
<= n
; i
++)
{
f3
= f1
+ f2
;
f1
= f2
;
f2
= f3
;
}
return f3
;
}
int main()
{
int a
= 0;
scanf("%d", &a
);
printf("%d\n", fabonacci(a
));
return 0;
}
利用循环求解
#include <stdio.h>
int main()
{
int f1
=1,f2
=1,f3
;
int i
,n
;
scanf("%d",&n
);
for(i
=1; i
<=n
-2; i
++)
{
f3
=f1
+f2
;
f1
=f2
;
f2
=f3
;
}
printf("%12d\n",f3
);
return 0;
}
利用递归求解
#include <stdio.h>
int fac(int n
)
{
if(n
==1)
return 1;
else if(n
==2)
return 2;
else
{
return fac(n
-1)+fac(n
-2);
}
}
int main()
{
int n
;
scanf("%d",&n
);
printf("%d",fac(n
));
return 0;
}
注:由于输出受限,仅支持求解到第48位斐波那契函数。
斐波那契函数的变形 有以下数列: 1、1、1、3、5、9、17… 除去前三项,其他项均为该数前三项之和。 要求输入第几项然后输出该项的数字大小 (1)利用函数求解
#include<stdio.h>
#include<stdlib.h>
int fabonacci(int a
)
{
int f1
= 1;
int f2
= 1;
int f3
=1;
int i
= 0, f4
= 1;
for (i
= 4; i
<= a
; i
++)
{
f4
= f1
+ f2
+ f3
;
f1
= f2
;
f2
= f3
;
f3
= f4
;
}
return f4
;
}
int main()
{
int n
= 0;
scanf("%d", &n
);
printf("%d\n", fabonacci(n
));
return 0;
}
(2)利用循环求解
#include <stdio.h>
int main()
{
int f1
=1,f2
=1,f3
=1,f4
;
int i
,n
;
scanf("%d",&n
);
for(i
=1; i
<=n
-3; i
++)
{
f4
=f1
+f2
+f3
;
f1
=f2
;
f2
=f3
;
f3
=f4
;
}
printf("%12d\n",f4
);
return 0;
}