• 递归(3)


    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)。
        }
    
    }
  • 相关阅读:
    免密码远程登录和远程操作
    1、linux网络服务实验 用PuTTY连接Linux
    巧用CAS解决数据一致性问题
    第一天
    图像处理02
    图像处理01
    Poem 01(转)
    CS229 Lecture 01
    日本語1
    latex测试
  • 原文地址:https://www.cnblogs.com/zoulingjin/p/8608239.html
Copyright © 2020-2023  润新知