斐波那契数列和递归实现阶乘

package com.lv.study;

public class DemoAm4 {
    //斐波那契数列:生兔子  :从1和1开始 后面一个数等于前面两个数之和
    public static void main(String[] args) {

        test2();

    }
    public static void test2(){

        int num1=1;
        int num2=1;
        int result =0;//暂时不知道结果 

        //推算第5轮结果
        int n=5;

        System.out.print("1\t1\t");
        for(int i=1;i<=5;i++){

             result=num1+num2;

             num1=num2;
             num2=result;

             System.out.print(result+"\t");
        }
    }

    public static void test1(){

        int num1=1;
        int num2=1;
        int result =(num1+num2);//暂时不知道结果 第一轮结果

        //推算第5轮结果
        int n=5;
        for(int i=1;i<=5;i++){
             num1=num2;
             num2=result;

             result=num1+num2;

             System.out.print(result+"\t");
        }
    }

}

递归

package com.lv.study;
//使用递归来实现阶乘
public class DemoAm3 {

    public static void main(String[] args) {

        int result=jc(5);
        System.out.println(result);

    }

    //返回number*x(number-1)
    public static int jc(int number){

        //第二个要给留出口
        if(number==1){
            return 1;//1的阶乘就是自己不需要运算
        }

        //第一个方法自己调用自己
        System.out.println("当前值"+number);
        return number*jc(number-1);
    }

}

原文地址:https://www.cnblogs.com/dabu/p/12304951.html

时间: 2024-11-07 07:15:57

斐波那契数列和递归实现阶乘的相关文章

斐波那契数列高效递归求法

时间:2014.05.19 地点:图书馆 ------------------------------------------------------------------- 一.简述 前面给出了一种斐波那契数列解法的矩阵幂方法,这是最高效的方法,时间复杂度为O(log).正常来说通过递推公式 F(n)=F(n-1)+F(n-2)直接来计算F(n)效率是很差的,因为这里会涉及很多冗余计算,比如求F(5),我们要求[F(4)和F(3)],[要求F(4)则得求F(3)和F(2),要求F(3)得求F

斐波拉契数列的递归、非递归、公式法多种方法实现

实现斐波拉契数列:1,1,2,3,5,8...,当n>=3时,f(n)=f(n-1)+f(n-2). 解:求解斐波拉契数列方法很多,这里提供了4种实现方法和代码,由于第5种数学公式方法代码太过繁琐,只做简单介绍 方法一:递归调用,每次递归的时候有大量重复计算,效率低,可将其调用的过程转化成一颗二叉树进行分析,二叉树的总结点个数不超过(2^n-1)个,由于其是不完全二叉树,那么函数计算的次数必小于(2^n-1),时间复杂度为O(2^n):递归调用的深度为n,空间复杂度为O(n) 方法二:非递归数组

【剑指offer】斐波那契数列(递归和非递归实现)

递归实现是最常想到的方法,代码如下: //递归方式 long Fibonacci(unsigned n) { if (n==0) { return 0; } else if (n==1) { return 1; } else { return Fibonacci(n-1)+Fibonacci(n-2); } } 显然递归并不是最好的方法,当n较大时效率将非常低下. 较好的思路是: 从下往上计算,首先根据f(0)和f(1)算出f(2),再根据f(1)和f(2)算出f(3)--依此类推就可以算出第n

关于斐波那契数列和递归

递归有三个基本点: 1.递归总有一个最简单的情况.即边界或者跳出递归的条件语句: 2.递归总是尝试解决一个规模更小的问题: 3.递归尝试解决的父问题和子问题之间不因该有交集: 以下是几个递归代码://斐波那契数列 import edu.princeton.cs.algs4.StdOut; public class No_1_1_19 { public static void main(String[] args) { for(int n=0;n<10;n++) { StdOut.println(

C语言编程实现斐波那契数列(递归与非递归)

一.非递归 <1>数组 #include<stdio.h> #include<stdlib.h> int main() { int a[10000] = { 0 };//利用数组求不了较大位置的斐波那契数 int i,m; a[0] = 1; a[1] = 1; printf("请输入要求第几个斐波那契数(大于等于2)\n"); scanf("%d", &m); for (i = 2; i <=m; i++) { a

斐波那契数列的递归和非递归解法

//递归解法 function fib(n){ if(n < 1){ throw new Error('invalid arguments'); } if(n == 1 || n == 2){ return 1; } return fib(n - 1) + fib(n - 2); } //非递归解法 function fib(n){ if(n < 1){ throw new Error('invalid arguments'); } if(n == 1 || n == 2){ return 1

斐波那契数列(递归)c#

我郑重宣布 我爱递归 我自己编程几乎都没用过递归 我看到这个题的时候虽然想到了用递归 但是我个脑残一直在想怎么设置动态数组 明明纯递归更简单 我也是可无语 反正我爱上递归了 爱惹  无法自拔 原文地址:https://www.cnblogs.com/ywfp-lee/p/11774462.html

斐波那契数列的递归实现

兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.假设所有兔子都不会死去,能够一直干下去,那么以后可以繁殖多少对兔子呢? 月数 1 2 3 4 5 6 7 8 9 10 11 12 兔子对数 1 1 2 3 5 8 13 21 34 55 89 144 所以我们找到了规律,从第三个月起,每个月的兔子对数都等于前两个月的兔子对数之和 那么我们用代码来表示 package com.sbtufss.test; public class Test { public static voi

c#斐波那契数列(Fibonacci)(递归,非递归)

public static int Foo(int i)        {            if (i < 3)            {                return 1;            }            else            {                return Foo(i - 1) + Foo(i - 2);            }        } static void Main(string[] args)        {