首页 > 其他 > 详细

递归与尾递归

时间:2020-01-05 23:15:37      阅读:97      评论:0      收藏:0      [点我收藏+]

递归就是自己调自己

 

 

public class NumberDG {

 

 

public static void main(String[] args) {

 

System.out.println(addNumber(5));

System.out.println(cfNumber(5));

System.out.println(afterNumebr(5, 1));

}

 

//尾递归阶乘 作用是 避免多于的栈空间

 

/**

* 所谓尾递归,就是在函数调用的时候,不会产生新的栈空间,

* 而是把原来的栈空间给覆盖了。它需要满足的条件就是,

* 一个递归函数的返回值不属于表达式的一部分的时候,

* 这样形成的递归就属于尾递归

* @param n

* @param a

* @return

*/

private static int afterNumebr(int n, int a) {

if (n == 1) {

return a;

} else {

int totel = afterNumebr(n - 1, n * a);

return totel;

}

 

}

 

/**

* 乘法阶乘

*

* @param n

* @return

*/

private static int cfNumber(int n) {

 

if (n == 1) {

return 1;

} else {

// 这个数是从 n开始往下一直乘

int totel = n * cfNumber(n - 1);

return totel;

}

 

}

 

/**

* 加法递归

*

* @param n

* @return

*/

public static int addNumber(int n) {

 

if (n == 1) {

return 1;

} else {

int totle = n + addNumber(n - 1);

return totle;

}

}

 

 

}

递归与尾递归

原文:https://www.cnblogs.com/limingming1993/p/12153984.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!