知方号

知方号

C语言用递归+循环迭代2种方法求斐波拉契数列(前n项和,第n项值,打印前n项)<斐波那契数列前n项和>

C语言用递归+循环迭代2种方法求斐波拉契数列(前n项和,第n项值,打印前n项)

什麽是斐波拉契数列?

斐波拉契数列特点是第N项总是等于前两项之和;

一般是从第一项和第二项都是1开始:例如

1 1 2 3 5 8 13 21 34 55 59.................... 求解斐波拉契数列一直是C语言基础的常见问题,一般题目大概分为三种:

问题1.编写一个程序,用户输入整数 N,程序输出第 N 项斐波那契数;

如输入N=7 ,运行结果是:13

问题2.编写一个程序,用户输入整数 N,程序打印前 N 项斐波那契数;

如输入N=7 ,运行结果是:1 1 2 3 5 8 13

问题3.编写一个程序,用户输入整数 N,程序输出前 N 项斐波那契数之和;

如输入N=7 ,运行结果是:1 + 1 + 2 + 3 + 5 + 8 + 13 = 33

这三类问题其实解法都一样,求解方法有两种,迭代法(又称循环法)和递归法;

 

方法一:迭代法(又称循环法)************************* #include//迭代法(循环法)int main(){int n = 0,n_dis=0,total=0;int ret = 0;int bef1 = 1;int bef2 = 0;printf("输入要求的斐波拉契数列项数:");scanf("%d", &n);n_dis = n;while(n>0){n = n - 1;bef2 = bef1;bef1 = ret;ret = bef1 + bef2;total = total + ret;//计算前n项和printf("%d ", ret);//如果不需要打印前n项每个数,则删除这句}printf("第%d项 = %d ",n_dis,ret);printf("前%d项和 = %d ",n_dis,total);return 0;}

linux下运行结果:

方法一:递归法************************* #include//递归法int fibonacci(int n)//可以求出第n项的值{ if(n

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。