用java递归 fn=f(n-1)+f(n-2) 求n

如题所述

    public class Demo2 {  

    // 定义三个变量方法  

    public static void main(String[] args) {  

    int a = 1, b = 1, c = 0;  

    System.out.println("斐波那契数列前20项为:");  

    System.out.print(a + "\t" + b + "\t");  

    //因为前面还有两个1、1 所以i<=18  

    for (int i = 1; i <= 18; i++) {  

    c = a + b;  

    a = b;  

    b = c;  

    System.out.print(c + "\t");  

    if ((i + 2) % 5 == 0)  

    System.out.println();  

    }  

    }  

    public class Demo3 {  

    // 定义数组方法  

    public static void main(String[] args) {  

    int arr[] = new int[20];  

    arr[0] = arr[1] = 1;  

    for (int i = 2; i < arr.length; i++) {  

    arr[i] = arr[i - 1] + arr[i - 2];  

    }  

    System.out.println("斐波那契数列的前20项如下所示:");  

    for (int i = 0; i < arr.length; i++) {  

    if (i % 5 == 0)  

    System.out.println();  

    System.out.print(arr[i] + "\t");  

    }  

    }  

    }  

    public class Demo4 {  

    // 使用递归方法  

    private static int getFibo(int i) {  

    if (i == 1 || i == 2)  

    return 1;  

    else  

    return getFibo(i - 1) + getFibo(i - 2);  

    }  

    public static void main(String[] args) {  

    System.out.println("斐波那契数列的前20项为:");  

    for (int j = 1; j <= 20; j++) {  

    System.out.print(getFibo(j) + "\t");  

    if (j % 5 == 0)  

    System.out.println();  

    }  

    }  

    }  

这道兔子题的实质就是斐波那契数列: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?,现在从变量、数组、递归三个角度出发解决这个puzzle,当然还有其它的方法,同一道题用各种不同的思路去思考解决,也是对知识综合运用的锻炼吧。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-03
//1 1 2 3 5 8 13
public static void main(String[] args) {
System.out.println(f(7));
}
public static int f(int n) {
if(n == 1 || n == 2) {
return 1;
} else {
return f(n - 1) + f(n - 2);
}
}

本回答被提问者和网友采纳
第2个回答  2016-07-20
用函数递归更简单,for循环也能解决
以下for循环方法:

int n=1;
int a=1; //f(n)
int b=1; //f(n-1)
int t=0; //f(n-2)
for(int i=1;i<n;i++){
t=b;
b=a;
a=b+t;
}
System.out.println("f(n)="+a);
第3个回答  2017-08-16
用矩阵快速幂求解
第4个回答  2016-07-20
0追问

递归求fn

用java递归 fn=f(n-1)+f(n-2) 求n
public static void main(String[] args) { int a = 1, b = 1, c = 0;System.out.println("斐波那契数列前20项为:");System.out.print(a + "\\t" + b + "\\t");\/\/因为前面还有两个1、1 所以i<=18 for (int i = 1; i <= 18; i++) { c = a + b;a = b;b = ...

java判断一个数是否斐波那契
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。以下是Java代码实现(递归与递推两种方式):import java.util.Scanner;public class Fibonacci { ...

在java中,用递归方法计算n的阶乘。
用Java求键盘输入的数的阶乘n。(递归算法)packagejiecheng; importjava.util.*; \/\/导入java.util包中的所有类classrep{ publiclongrep(intn){ longi=0; if(n==0||n==1) i=1;elsi=n*rep(n-1) returni; } } publicclassJie { publicstaticvoidmain(String[] args) { intn; ...

java实现计算斐波那契数列第n项值的方法是什么?
其实就是一个递归算法,如下:public class Test {public static void main(String[] args) {System.out.println(f(6));}public static int f(int n){if(n==1||n==2){return 1;}else{return f(n-1)+f(n-2);}}} 1、Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java...

java 编写程序,输出斐波那契数列前30项中的所有质数
public class MSS {\/\/就是从2开始除,到自身的一半 如果都不能整除就是了public static boolean isShuShu(int num) { boolean res = true; for (int i = 2; i < (num \/ 2); i++) { if (num % i == 0) { res = false;} } return res; } \/** * @...

斐波那契数列的性质
1、在数学中,裴波那契数列的递推公式为F(n)=F(n-1)+F(n-2),经过一系列的数学推导,可以发现裴波那契数列的极限为黄金分割比0.618,在金融工程中的黄金分割比率及建筑工程中的黄金比例,都来源于斐波那契数列的规律。2、在计算机算法中,裴波那契数列常被用于解决一些算法问题,例如斐波那契堆...

java用递归编程求斐波那契数列第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语言...

递归法求n的阶乘算法
1.回推 求n的阶乘可以描述如下:n!=n*(n-1)!(n-1)!=(n-1)*(n-2)!(n-2)!=(n-2)*(n-3)!(n-3)!=(n-3)*(n-4)!...2!=2*1!1!=0!0!=1 1!=1 如果把n!写成函数形式,即f(n),则f(5)就是表示5!。求5!的过程可以写成如下形式:f(5)=5*f(4)f(4)=4*f(...

详解Java递归(Recursion)通过递归解决迷宫回溯及八皇后问题
一.打印问题public static void test(int n){if(n > 2){test(n - 1);}System.out.println("n="+n);} 递归调用规则 当程序执行到一个方法时候,就会开辟一个独立的空间(栈)。每个空间的数据(局部变量),是独立的。控制台运行结果 二.阶乘问题public static int factorial(int n){if(n ...

用递归方法求n阶
递归求n阶的方法如下:递归实现n的阶乘什么是阶乘:0! = 1,n! =n * (n - 1) * (n - 2)...3 *2 * 1; 解题思路: 1> 分析题意,很明显0是递归出口; 2> 很好看出,递归调用自己,直到n等于0,返回之前的函数,直到最后一个; 3> 一个简单n的阶乘就计算完成,返回并输出。菲...

相似回答