用递归实现阶乘


package com.plato.method;

import java.util.Scanner;

public class MethodDemo05 {
    public static void main(String[] args) {
        //递归示例:计算阶乘
        Scanner scanner = new Scanner(System.in);
        System.out.println(f(scanner.nextInt()));

    }

    public static int f(int num) {
        if (num < 0) {
            System.out.println("请输入自然数!");
            return num;
        } else if (num == 0) {
            return 1; //0的阶乘是1
        } else if (num == 1) {
            return 1; //边界条件
        } else {
            return num * f(num - 1);
        }

    }
}

递归如果没有边界条件就会发生栈溢出错误(StackOverflowError),栈溢出是很严重的问题。