递归就是自己调自己

 

 

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;

}

}

 

 

}

posted on 2020-01-05 22:40  沐雨清晨  阅读(194)  评论(0)    收藏  举报