java的递归

java的递归

1.简介
所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
2.递归求阶乘
阶乘:阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即n!=1×2×3×…×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

package com.ls.bubbling;

import java.util.Scanner;

/**
 * 递归求阶乘
 */
public class TestFactorial {
    public  static  void main(String[] args){
        System.out.println("输入整数求阶乘:");
        int n = new Scanner(System.in).nextInt();
        long r=f(n);
        System.out.println(r);
    }
    private static long f(int n) {
     if (n==1){
         return 1;
     }
     return  n*f(n-1);
    }
}

3.递归求整数总和

package com.ls.bubbling;

import java.util.Scanner;

/**
 * 递归求整数总和
 */

public class TestSum {
    public  static  void main(String[] args){
        System.out.println("输入整数求总和:");
        int n = new Scanner(System.in).nextInt();
        long r =f(n);
        System.out.println(r);
    }
    private static long f(int n) {
        if(n==0){
            return 0;
        }
        return n+f(n-1);
    }
}