递归

Posted leonard丶zou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归相关的知识,希望对你有一定的参考价值。

1.对处理递归方法的总结

调用递归的时候,把递归函数当成一个黑盒子,下面的这位总结的不错可以参考

https://www.zhihu.com/question/31412436/answer/51922344

2.整数划分问题

package day6;

import java.util.Scanner;

public class Division {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数:");
        int m = sc.nextInt();
        System.out.println("请输入你的最大加数");
        int n = sc.nextInt();
        int num = q(m, n, "");
        System.out.println("num=" + num);
    }
    private static int q(int m, int n, String str) {
        // 必须要求:m>0,n>0
        if (m < 0 || n < 0)
            return 0;
        //输出都是1+1+1+1+...+1的情况
        if ((m == 1) || (n == 1)) {
            System.out.print(str);
            for (int i = 1; i < m; i++) {
                System.out.print("1+");
            }
            System.out.println("1");
            return 1;
        }
        //最大不超过n即q(m,m)等效于          最大为m  +  q(m,m-1)继续递归
        if(m==n){
            System.out.println(str+m);
            return 1+q(m,m-1,str);
        }
        //最大不超过m即q(m,n)等效于         q(m,n-1)   + q(m-n,n)
        
        if(m>n){
            int n1 = q(m-n,n,str+n+"+");
            int n2 = q(m,n-1,str);
            return n1+n2;
        }
        return q(m,m,str);//m < n,直接返回递归分解的个数q(m,m)。
    }

}

 

以上是关于递归的主要内容,如果未能解决你的问题,请参考以下文章

executePendingTransactions 的递归入口

nodejs常用代码片段

JavaScript 代码片段

48个值得掌握的JavaScript代码片段(上)

哈斯克尔。我很困惑这个代码片段是如何工作的

JavaSE 方法的使用