zoukankan      html  css  js  c++  java
  • Java中的递归以及不死神兔实例(斐波那契数列)

    递归
    1、递归次数不要太多,太占内存
    2、递归一定要有出口
    3、构造方法不能递归使用
    三种方法实现实例:

    package test17_digui;
    
    import java.util.Scanner;
    
    /*
     * 题目:有一对兔子,从出生后第3个月起每个月都生1对兔子,小兔子第三个月后也可以生一对兔子,
     * 		假如兔子不死,在指定月份时刻一共可以有多少对兔子
     * 
     * 分析:
     * 		第一个月:1
     * 		第二个月:1
     * 		第三个月:2
     * 		第四个月:3
     * 		第五个月:5
     * 		第六个月:8
     * 		。。。。。
     * 		
     * 		其实指定月份兔子的总数为此月之前两个月兔子总数之和。
     * 
     * 实现3种方法
     * 		1、数组实现
     * 		2、相邻变量实现
     * 		3、递归实现
     */
    public class DiGuiDemo {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入当前月份");
    		int m=sc.nextInt();
    		int n1=0;
    		int n2=0;
    		int n3=0;
    		sc.close();
    		
    		//数组实现
    		if(m<=2) {
    			n1=1;
    			
    		}else {
    			int []x=new int[m];
    			x[0]=1;
    			x[1]=1;
    			for(int i=2;i<m;i++ ) {
    				x[i]=x[i-1]+x[i-2];		
    			}	
    			n1=x[m-1];
    		}
    		System.out.println("方法一:数组实现");
    		System.out.println("	"+"第"+m+"月份共有"+n1+"对兔子");
    		System.out.println("--------------------------");
    		
    		
    		//相邻变量实现
    		if(m<=2) {
    			n2=1;
    			
    		}else {
    			int a=1;
    			int b=1;
    			int temp=0;
    			for(int i=0;i<m-2;i++) {
    				temp=a;
    				a=b;
    				b=temp+b;
    			}
    			n2=b;
    		}
    		System.out.println("方法二:相邻变量实现");
    		System.out.println("	"+"第"+m+"月份共有"+n2+"对兔子");
    		System.out.println("--------------------------");
    		
    		//递归实现
    		n3=digui(m);
    		System.out.println("方法三:递归实现");
    		System.out.println("	"+"第"+m+"月份共有"+n3+"对兔子");
    	}
    
    	private static int digui(int m) {
    		// TODO Auto-generated method stub
    		if(m<=2) {
    			return 1;
    		}else {
    			return digui(m-1)+digui(m-2);
    		}
    		
    	}
    
    }
    
    
    
    12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
    

    输出结果:
    在这里插入图片描述




    转载自:https://blog.csdn.net/zfliu96/article/details/83931876

  • 相关阅读:
    在Centos7下源代码安装配置Nginx
    mysql5.7.21源码安装
    数据库设计三大范式
    电商项目中使用Redis实现秒杀功能
    PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
    PHP面向对象(抽象类与抽象方法、接口的实现)
    php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
    利用VHD虚拟文件加密自己的个人信息
    Chrome常用快捷键
    stl本子
  • 原文地址:https://www.cnblogs.com/k-class/p/13774017.html
Copyright © 2011-2022 走看看