`

自己用递归写的组合算法遇到的问题

阅读更多
   public List zuhe(char[] c, int num) {
        List list = new ArrayList();
        char[] cc = new char[num];
        zuhe(0, num, 0, c, cc,list);
        return list;
    }

    private void zuhe(int ii, int num, int n, char[] c, char[] cc, List list) {
        for (int i = ii; i < c.length + 1 - num; i++) {
            if (num == 1) {
                cc[n] = c[i];
                System.out.print(cc);
                list.add(new String(cc));
                //list.add(cc);改为这样则不行
                //list.add(cc.clone());改为这样也是可以的
                System.out.print(" ");
            } else {
                cc[n] = c[i];
                zuhe(i + 1, num - 1, n + 1, c, cc, list);
            }
        }
    }

 自己写的一个组合算法,当算法中的list.add(new String(cc))改为list.add(cc)时,list所有元素均为最后一个元素,想了很久不得其解。后来忽然明白了,原来是一个传值,传引用的问题,呵呵

 

1
0
分享到:
评论

相关推荐

    组合递归算法【原创】

    例如,文件系统、二叉树遍历或斐波那契数列等问题都可以用组合递归来解决。在这些情况中,每个节点(或问题)可以分解为若干个子节点(子问题),而最终结果是所有子节点结果的组合。 在二叉树遍历中,我们可以使用...

    递归算法专题ppt

    2. **定义递归规则**:如何将大问题分解为小问题,并通过这些小问题的解决方案组合成大问题的解决方案。 3. **分析递归深度**:递归调用的次数决定了递归的深度,这直接影响到程序的效率和内存消耗。 **递归与非...

    N选M的所有组合(递归与非递归实现)

    在计算机科学中,组合问题是一种常见的算法问题,它涉及到从给定的一组元素中选择特定数量的元素,而不需要考虑元素的顺序。本主题将详细探讨如何从N个不同的元素中选择M个元素的所有可能组合,同时提供递归和非递归...

    递归算法总结

    尽管递归算法有其明显的优点,比如简化问题描述、使算法更加清晰易懂,但是它也存在一些潜在的缺点,例如高时间复杂度和栈溢出问题。理解递归算法的定义、作用、实现过程、优缺点以及应用场景是掌握这种算法的基础。...

    Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例

    在编程实践中,掌握如何使用不同的算法来解决同一问题是非常重要的,它不仅可以帮助开发者写出更加高效的代码,还能在遇到特定问题时有多种思路去思考和解决。此外,了解这些基本算法的原理也有助于我们在使用第三方...

    递归算法事例及理论说明

    递归算法的核心在于将大问题分解为规模更小的同类问题,然后通过递归调用来求解这些子问题,最终组合成原问题的解答。 递归算法有以下几个特点: 1. **自我调用**:递归算法中,函数或子过程会直接或间接地调用...

    经典实例讲解C#递归算法

    总结来说,递归算法在解决特定类型问题时非常有用,尤其是那些能够分解成相似子问题的问题。然而,由于其可能导致的效率问题和内存消耗,应当谨慎使用。在实际编程中,通常会结合其他数据结构和算法,如动态规划或...

    C语言算法1-3章 算法,递归算法 模拟算法

    - **定义**:递归算法是一种在函数内部调用自身的算法,它通过不断缩小问题规模来求解复杂问题。 - **示例**:阶乘函数就是一个典型的递归算法应用实例。 #### 1.6 分治算法 - **定义**:分治算法是通过将大问题...

    算法进阶 01 递归调用 打表

    在编程领域,算法是解决问题的关键,而递归调用是算法设计中的一种重要技术。递归调用是指函数或方法在执行过程中调用自身的过程,它通常用于解决那些可以通过简化问题规模来解决的问题。本节将深入探讨递归调用的...

    算法分析 递归与分治策略 动态规划 贪心算法 分支限界法 随机化算法等算法

    在IT领域,算法是解决问题的核心工具,而递归与分治策略、动态规划、贪心算法、回溯法、分支限界法以及随机化算法都是其中的重要组成部分。这些算法不仅适用于计算机科学,也在数据结构、优化问题和复杂计算中扮演着...

    递归算法(阶乘)

    在编程领域中,递归算法是解决问题的一种基本而强大的方法。尤其在需要将大问题分解为更小的、更易管理的子问题时,递归提供了一种简洁的解决方案。在众多应用场景中,递归算法尤其在计算数学函数,例如阶乘...

    学习常用算法之(5)递归法

    递归算法在解决这类组合问题时,可以展现出优雅的代码结构,但同样需要注意效率问题,防止大量重复的组合计算。 总结来说,递归法是解决算法问题的有效工具,尤其适用于那些能分解为自身规模更小实例的问题。理解和...

    易语言递归算法1

    6. **回溯法**:在解决组合优化问题如八皇后问题、迷宫求解等时,递归常用于回溯搜索,尝试各种可能的路径,遇到障碍时退回一步,尝试其他路径。 在易语言中实现递归时,需要注意以下几点: - **效率问题**:由于...

    0-1背包问题-递归算法 c语言实现

    ### 0-1 背包问题:递归算法 C语言实现 #### 一、问题背景及定义 0-1背包问题是一种经典的组合优化问题,在计算机科学与运筹学领域有着广泛的应用。该问题的基本形式如下:给定一组物品,每种物品都有自己的重量和...

    基于数据结构的程序递归算法设计.pdf

    递归算法是一种重要的程序设计方法,在处理具有自相似性质的问题时尤为有效。它允许函数调用自身,形成一个在问题规模逐渐缩小直至达到基本情形(递归边界)时结束的函数调用序列。递归算法设计的关键在于合理地定义...

    递归算法练习

    递归算法虽然强大,但也有其局限性,如可能导致大量重复计算,增加内存开销,以及可能遇到栈溢出的问题。因此,在实际应用中,我们通常会考虑优化策略,如记忆化搜索或动态规划,来提高效率并减少资源消耗。 总的来...

    求解这几个问题,几个递归算法中的问题,挺有意思的。

    在递归实现中,我们首先检查基本情况(可以直接得出答案的情况),然后将问题分成更小的子问题,并递归地解决这些子问题,最后将子问题的解组合得到原问题的解。 2. **动态规划**:动态规划是通过构建一个表格,...

    递归搜索算法

    递归搜索算法是一种在计算机科学中广泛使用的编程技术,它涉及到一个函数在其定义中调用自身来解决问题。这种自我调用的过程通常与分治策略相结合,将大问题分解为更小的子问题,直到子问题变得足够简单可以直接解决...

    西南交通大学数据结构实验报告黑白棋.doxc递归算法设计及堆栈消除递归

    总的来说,这个实验旨在让学生理解递归算法的原理,掌握如何利用堆栈消除递归,以及在实际问题中应用这些知识。通过实现黑白棋子交换游戏和全排列问题,学生可以深入理解数据结构(如栈)在解决问题中的重要性,并...

Global site tag (gtag.js) - Google Analytics