用递归函数求斐波那契数列的第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;

}

在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。

扩展资料:

一个完全是自然数的数列,通项公式却是用无理数来表达的。而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618(或者说后一项与前一项的比值小数部分越来越逼近0.618)。

从第二项开始,每个偶数项的平方都比前后两项之积少1,每个奇数项的平方都比前后两项之积多1。

如:第二项1的平方比它的前一项1和它的后一项2的积2少1,第三项2的平方比它的前一项1和它的后一项3的积3多1。

注:奇数项和偶数项是指项数的奇偶,而并不是指数列的数字本身的奇偶,比如从数列第二项1开始数,第4项5是奇数,但它是偶数项,如果认为5是奇数项,那就误解题意,怎么都说不通。

参考资料来源:百度百科--斐波那契数列

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-08

#include <stdio.h>
int fib(int n)
{if(n<3)return 1;
 return fib(n-1)+fib(n-2);
}
int main()
{int n;
 scanf("%d",&n);
 printf("%d\n",fib(n));
 return 0;
}

本回答被网友采纳

用递归函数求斐波那契数列的第n项的值
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;} 在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)...

用递归法计算斐波那契数列的第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));...

...一个递归函数,计算并返回斐波那契数列中第n项的值,斐波那契数列定义如...
scanf("%d",&n);s=fib(n);printf("%d\\n",s);}

java用递归编程求斐波那契数列第n项
public class Fibonacci { public static void main(String args[]){ int n,fn;\/\/n为第n项,fn为第n项的值 java.util.Scanner s = new Scanner(System.in);n=s.nextInt();fn=function(n);System.out.println("斐波那契数列第"+n+"项为:"+fn);} public static int function(int n){...

斐波那契数列c语言
\/\/ 函数用于计算斐波那契数列的第n项值 int fibonacci { if { \/\/ 基本情况,返回n或1 return n;} else { \/\/ 递归计算斐波那契数列的值 return fibonacci + fibonacci;} } int main { int n = 10; \/\/ 假设需要计算第10项的斐波那契数列值 printf); \/\/ 输出结果 return 0;} 解释如下:...

如何用递归解决斐波那契数列
斐波那契数列定义 f(1)=1, f(2)=1, f(n)=f(n-1)+f(n-2)用递归的方法解决是最快的(对设计者而言)int fipo(int n){ if (n==1) return 1;else if (n==2) return 1;else { return fipo(n-1)+fipo(n-2);} } 函数fipo 会一直不断地调用自己,直到 n=3时, 才能计算出...

...2,3,5,8,N;q请说出这组数据有什么规律?并且用递归方法求出第N位值...
0,1,1,2,3,5,8,N;是f(n)=f(n-2)+f(n-1),斐波那契数列 用c语言 \/\/使用递归计算斐波那契(Fibonacci)数列的第n项函数 int Fib(int n){ if(n==0)return 0;if(n==1)return 1;if(n>1)return (Fib(n-1)+Fib(n-2));return 0;} ...

斐波那契数列解题技巧
第一种解法:递归法。利用C++求解斐波那契数列第N项数字是什么?我们可以用C++算法归法来进行表示,我们知道,斐波那契数列的每一项数字都等于前面两项数字之和,那么用计算机函数来表示,若fun为求斐波那契数列的第N项的函数,那么fun(N)=fun(N-1)+fun(N-2)。第二种解法(记忆化递归\/动态规划):第一种...

C++编程:用递归法计算斐波那契数列第n项的值(同时输出前n项)-请修 ...
include<iostream>using namespace std;int fibonacci(int n){int fibo;static int temp;if (n == 1 || n == 2)fibo = 1;else{fibo = fibonacci(n-1) + fibonacci(n-2);if (temp < fibo){cout << " " << fibo;temp = fibo;}}return fibo;}int main(){int n, fibon;cout ...

数组求斐波那契数列第n项
斐波那契数列的第n项Fn可以通过如下的递归公式定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n ≥ 3,n ∈ N*)通项公式 如上,又称为“比内公式”,是用无理数表示有理数的一个范例。注:此时a1=1,a2=1,a(n)=a(n-1)+a(n-2),(n ≥ 3,n ∈ ...

相似回答