码迷,mamicode.com
首页 > 其他好文 > 详细

递归简论

时间:2018-04-27 23:04:09      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:code   ==   大于   需要   获得   直接   函数   整数   编写   

我们熟悉的大多数数学函数都是由一个简单的公式来描述的,

模拟数学函数 公式为f(X)= 2f(x-1)+x*x
* 我们在非负整数集上定义一个函数f,它满足f(0)= 0;并且满足上述公式;
* 我们就可以根据上述公式定义一个函数 当一个函数 用它自己来定义时 就称之为递归函数
 //可以使用递归的地方一定要满足几种条件
    //不可以在调用自己的时候 陷入死循环 而且在调用自身的时候 一定有某些时候 可以不需要调用递归就能算出值
    //也就是下面的函数 当x == 0的时候直接返回 0 否则陷入无限次的循环 就永远不会有结果
    //并且 函数要不断的向 着 不需要调用递归就能算出结果的条件逐渐的推进 才可以使用递归

    public int f(int x){
        if(x==0)
            return 0;
        else
        return 2*f(x-1) + x*x;
    }

    @Test
    public void testf(){
        System.out.println(f(8));
    }
    /**
     * 那么这次使用递归  来练习一下
     * 现在假设 一个正整数n 并希望把它打印出来,我们的的例程名字叫做 printOut(N),假设现在仅有的例程
     * printDigit(n)每次只可以打印单个数字到终端,
     * 那么我们想打印76234 要怎么打印呢
     * 我们来分析一下  假设 这个正整数有k位数字 我们完全可以用 这个正整数 去%10 取余 来获得,那么这个正整数去掉最后一位
     * 用什么来表示呢 用n/10来表示;
     * 所以根据上述分析我们来编写递归函数,
     * 实现递归的两个必要条件
     * 1 有基准情形 也就是不需要通过递归就可以算出结果的
     *  也就是在我们打印的是一个单个整数的时候 我们直接使用printDigit来打印就可以了
     *
     * 2 不断向基准情形推进 在个数大于1的时候 去掉最后一位数的前几位怎么表示 n/10 然后不断的去掉最后一位 一直到只剩一位
     * 所以递归方法体里的内容就是 先取这个正整数的去掉最低位数的所有数字 在 去掉并且打印最后一位;
     *
     */
    public void printOut(int n){
        if(n>=10)
            printOut(n/10);
            printDigit(n%10);

    }
    public void printDigit(int x){
        System.out.print(x);
    }
    @Test
    public void testPrintOut(){
        printOut(76234);
    }

 

递归简论

标签:code   ==   大于   需要   获得   直接   函数   整数   编写   

原文地址:https://www.cnblogs.com/ChenD/p/8964733.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!