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项和