递归就是自己调自己
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