C语言 用调用函数和数组求斐波那契数列的前10项。 f[i]=F(f,i); 能这样用吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 用调用函数和数组求斐波那契数列的前10项。 f[i]=F(f,i); 能这样用吗相关的知识,希望对你有一定的参考价值。

参考技术A 首先,你这样做当然不能说不行,起码语法上是没问题的。
不过类似的问题要么是通过递归调用解决,要么转换成循环来解决。两者比较,前者实现简单,后者效率高(其实某些对性能要求高和堆栈深度有限制的情况,必须要花一番功夫改成循环的实现方式)。
你定义了F()函数,看起来是想用递归调用来实现,但实际上你又是通过循环来解决问题的。有点四不像的感觉。建议你要么用递归,要么干脆就用纯粹的循环。
下面是递归的例子:
int
F(int
i)

if
(i
==
1
||
i
==
2)

return
1;

else

return
F(i-1)
+
F(i-2);

c语言.计算斐波那契数列的前n项和(s),四种方法?

方法1 1个源程序文件,只使用主函数,用while语句完成程序设计任务
方法2 1个源程序文件,只使用主函数,用do-while语句完成程序设计任务。
方法3 1个源程序文件,只使用主函数,用for语句完成程序设计任务。
方法4 1个源程序文件,主函数在前,其它函数在后,完成程序设计任务。

方法2:

  

#include <stdlib.h>
#include <stdio.h>

int Fibon1(int n)

if (n == 1 || n == 2)

return 1;

else

return Fibon1(n - 1) + Fibon1(n - 2);

int main()

int n = 0;
int m=0;
int ret = 0;
printf("请输入要计算的斐波那契数列的前N项总数:");
scanf("%d", &n);
m=n;
do

ret += Fibon1(n);
n--;
while (n>0);

 printf("前%d项目和ret=%d", m,ret);
getchar();
getchar();
return 0;

运行结果:

方法4:

#include <stdlib.h>
#include <stdio.h>

int Fibon1(int n);

int main()

int n = 0;
int m=0;
int ret = 0;
printf("请输入要计算的斐波那契数列的前N项总数:");
scanf("%d", &n);
m=n;
do

ret += Fibon1(n);
n--;
while (n>0);

 printf("前%d项目和ret=%d", m,ret);
getchar();
getchar();
return 0;

int Fibon1(int n)

if (n == 1 || n == 2)

return 1;

else

return Fibon1(n - 1) + Fibon1(n - 2);


运行结果:

参考技术A 这里贴代码太长了,而且格式没法调整,可读性低。追问

给出两种方法就行,二和四就行

以上是关于C语言 用调用函数和数组求斐波那契数列的前10项。 f[i]=F(f,i); 能这样用吗的主要内容,如果未能解决你的问题,请参考以下文章

c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和

c语言.计算斐波那契数列的前n项和(s),四种方法?

编写一递归函数求斐波那契数列的前40项

c语言中,。编写程序求斐波那契数列的第n项和前n项之和。大家看好是【第】n项的值和前n项的合= =。

如何用C语言输出斐波那契数列的前n项

c语言数组编程,斐波那契数列的第1,2项均为1,其后各项为前两项之和,输出前10项,每5项换一行