java用递归编程求斐波那契数列第n项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java用递归编程求斐波那契数列第n项相关的知识,希望对你有一定的参考价值。
public class Fibonaccipublic 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)
if(n==1 || n==2) return 1;
return function(n-1)+function(n-2);
希望能帮到你,其实和c语言是一样一样的。。 参考技术A 套数学里的就是了 f(0) = 1, f(1) = 1, f(2) = 2, ...
int fib(int i)
if( i < 2 ) return 1; // 递归结束的条件
return f(i -1) + f(i-2);
参考技术B import java.io.*;
public class Zhidao1
public static void main(String[] args)
Zhidao1 z1=new Zhidao1();
int n;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入要求的数是第几个数:");
try
String str=br.readLine();
n=Integer.parseInt(str);
System.out.println("第"+n+"个斐波那契数是:\n"+z1.getFib(n));
catch (Exception e)
e.printStackTrace();
public long getFib(int n)
long fn;
if(n==1||n==2)
fn=1;
else
fn=getFib(n-1)+getFib(n-2);
return fn;
参考技术C 这样做,从内存上来说,深层次的递归容易造成栈溢出,我推荐这种
public static void main(String[] args)
int i=1;
int t=1;
for(int s=0;s<10;s++)
System.out.println(i);
if(s>0)
i += t;
t = i-t;
参考技术D public class Test
public static void main(String args[])
int x1 = 1;
int sum = 0;
int n = 7;
for (int i = 1; i <= n; i++)
x1 = func(i);
sum = sum + x1;
System.out.println("sum=" + sum);
public static int func(int x)
if (x > 2)
//返回前两个数的和
return (func(x - 1) + func(x - 2));//返回前两个数的和
else
return 1;
用递归函数求斐波那契数列的第n项的值
斐波那契函数的定义为
fib(n)=1 (n=0)
1 (n=1)
fib(n-1)+fib(n-2) (n>1)
#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是奇数项,那就误解题意,怎么都说不通。
参考资料来源:百度百科--斐波那契数列
参考技术A #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;
参考技术B #include<stdio.h>
fib(int n)
if(n==0) return(0);
else if(n==1) return(1);
else
return(fib(n-1)+fib(n-2));
main()
int n,s;
scanf("%d",&n);
s=fib(n);
printf("%d\n",s);
本回答被提问者和网友采纳 参考技术C #include<stdio.h>
int
fun(int t)
if(t==0)return 0;
if(t==1)return 1;
else return fun(t-1)+fun(t-2);
int
main()
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
return 0;
参考技术D 这个还是比较不错的一个选项
以上是关于java用递归编程求斐波那契数列第n项的主要内容,如果未能解决你的问题,请参考以下文章