xcxd.net
当前位置:首页 >> 斐波那契数列C语言迭代 >>

斐波那契数列C语言迭代

c语言编写一个使用迭代计算斐波那契数列中第n项的函数:#include <stdio.h> int Fibonacci(int n) { if( n == 1 || n == 2) // 递归结束的条件,求前两项 return 1; else return Fibonacci(n-1)+Fibonacci(n-2); // 如果是求其它项,先要求出它前面两项,然后做和.} int main() { int n; printf("please input n: "); scanf("%d",&n); printf("Result: %d\n",Fibonacci(n)); return 0; }

private int f(int n) { if(n==0) return 0; if(n==1) return 1; return f(n-1)+f(n-2); }

递归:int fun1(int n) { if ( n == 1 || n == 2 ) return 1; return fun1(n - 1) +fun1(n - 2); }迭代:int fun2(int n) { if ( n == 1 || n == 2 ) return 1; int tmpe, f1 = 1, f2 = 1; for (int i = 2; i 追问: 我要的是递推法不是递归法 我还要求旁边有注解说明 追答

#include int fib(int n)//递归函数 {//斐波那契数列算法 if(n==1||n==2) return 1; return fib(n-1)+fib(n-2); } int main() { int n; scanf("%d",&n); printf("%d\n",fib(n)); return 0; }

#include "stdio.h"#include "math.h"main(){ float a[13]; int n,i; float x,y; for (n=0;n<13;n++) { if (n<3) { x=1;y=1; for(i=0;i<=n;i++) { x=x*(1+sqrt(5))/2; y=y*(1-sqrt(5))/2; } a[n]=(1/sqrt(5))*(x-y); } else a[n]=a[n-1]+a[n-2]; } for(n=0;n<13;n++) { printf("%6.

斐波纳契数第三项起:每一项都是前两项之和!这里可以用递归或者循环的方法!楼上的给了递归的代码! 我写一个模板递归的方法(速度更快,无需执行任何函数和循环,但是实用性低)代码用于计算第十项的斐波纳契数和前十项和:#

递归long func(int n){ if(n ==1 || n == 2) return 1; return func(n - 1) + func(n -2);}【分析】主函数中传入1000,那么t=1000然后进入子程序:k=1:c=1,b=0+1=1,a=1k=2:c=1,b=1+1=2,a=1k=3:c=2,b=1+2=3,a=2k=4:c=3,b=1+3=4,a=3………………………………请注意看只看a的结果,1,1,2,3……就是菲那波契数列了.那么当a的结果大于t,中断程序,输出结果即可.

我举个例子:①斐波那契数列:1,1,2,3,5,8,13,21,34迭代:int Fib[N]; Fib[0]=1;Fib[1]=1; for(i=2;i<N;i++) Fib[i]=Fib[i-1]+Fib[i-2];}递归:int Fib(int n){ if(n==0||n==1)return 1; else return (Fib(n-1)+Fib(n-2));}

#include int fun(int n) { if( n == 1 || n == 2) // 递归2113结束百的条件,求前5261两项度 return 1; else return fun(n-1)+ fun(n-2); // 如果是求其它项知,先4102要求出它道前1653面两项,然后版内做和. } int main() { int n; printf("please input n: "); scanf("%d",&n); printf("Result: %d\n", fun(n)); return 0; } 哪儿不明白容就继续追问权

就是计算前两个数的和,输出为第三个数,搞清楚要求再来编程即可.只是打印输出,不需要保留就整形即可,要保留使用,用数组实现.int DateOld =0;int DateNow=1;int N;for (N =0;N<18;N++){ int temp = DateNow; printf("%d ", DateNow); DateNow=DateOld +temp; DateOld=temp;}

网站首页 | 网站地图
All rights reserved Powered by www.xcxd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com