Java之函数递归

来源:互联网 发布:手机端电影网站源码 编辑:程序博客网 时间:2024/04/30 01:55

概念

函数递归的概念:所谓函数递归就是自己调用自己。

经典例题之猴子吃桃问题

    猴子吃桃子问题:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个。    第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。    到第10天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?
方法一:(递归方法解决问题)public class Monkey {    /*     *  理解: 把第十天当成第一天,把第一天当成第十天     *  递推公式:     *  f(1)=1 => f(2)=2[f(1)+1] => ... => f(n+1)=2[f(n)+1] =>f(n)=[f(n+1)]/2 -1     *  ==> f(n)=2*f(n-1)+2 (我们要的递推结果)     * */    public static void main(String[] args) {        System.out.println(f(10));    }    //递归方法解决问题    public static int f(int n) //n是离现在的天数    {          if(n==1){            return 1;  //只有一天的结果        }else{            return 2*f(n-1)+2; //递推公式 , 利用了递归的原理做的(自己调用自己)        }    }}
方法二:(循环方法解决问题)public class Monkey {    //这是一种逆推的方法,循环实现    public static void main(String[] args) {        int initialNum=1;            System.out.println(initialNum);        //循环方法        for(int i=1;i<10;i++){            initialNum=(initialNum+1)*2;            System.out.println(initialNum);                                    }        System.out.println("the initial number of peachs is:"+initialNum);    }}
1 0
原创粉丝点击