相关疑难解决方法(0)

什么是递归,什么时候应该使用它?

在邮件列表和在线讨论中经常出现的主题之一是进行计算机科学学位的优点(或缺乏).似乎一次又一次地为负面派对提出的论点是,他们已编码了若干年,他们从未使用过递归.

所以问题是:

  1. 什么是递归?
  2. 我什么时候使用递归?
  3. 为什么人们不使用递归?

recursion computer-science

121
推荐指数
11
解决办法
18万
查看次数

递归的真实例子

什么是现实世界的问题,其中一个递归的方法是除了深度优先搜索(DFS)的自然的解决方案?

(我不考虑河内塔,斐波纳契数或因子现实世界的问题.在我看来,它们有点做作.)

recursion

86
推荐指数
15
解决办法
10万
查看次数

除了生成Fibonacci序列之外,递归的一个很好的例子是什么?

可能的重复:
递归的真实
示例递归函数的示例

我看到,通过一个简单的例子是如何产生的斐波那契序列大多数编程语言教程教递归,我的问题是,有没有比产生Fibonacci序列解释递归是如何工作之外的另一个很好的例子?

c++ algorithm recursion fibonacci

26
推荐指数
10
解决办法
1万
查看次数

什么是递归

可能重复:
递归函数的示例

我一直在努力研究编程中的递归作为一个概念(虽然我专门研究Java),这就是我最了解的东西:

例如,在现实生活中,递归是指我们将两个镜子放在彼此面前并且它们之间产生的图像是递归的.

但我没有在编程中得到这个算法?有人能给我一个简化的例子来理解递归吗?

java recursion

4
推荐指数
2
解决办法
9407
查看次数

一种方法中的双重递归 Java

我很确定我完全理解只有一个递归的方法是如何工作的。

Ex) 计算阶乘

public int factorial(int n){  //factorial recursion
    if(n==0){
        return 1;
    }
    else{
        return n*factorial(n-1);
    }
} 
Run Code Online (Sandbox Code Playgroud)

对于这些方法,我什至可以想象堆栈中发生了什么以及在每个堆栈级别返回了什么值。

但是每当我遇到双重递归的方法时,噩梦就开始了。

下面是来自编码蝙蝠的双重递归的递归问题。

例如)给定一个整数数组,是否可以选择一组整数,使得该组和给定的目标相加?如果是,则为真。如果没有,则为假。您使用 3 个参数;起始索引start,一个 int Array nums,目标 int 值目标

下面是这个问题的解决方案。

public boolean groupSum(int start, int[] nums, int target) {
    if (start >= nums.length) return (target == 0);
    if (groupSum(start + 1, nums, target - nums[start])) return true;
    if (groupSum(start + 1, nums, target)) return true;
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我对这个解决方案的理解是这样的。假设我得到了一个数组 {2,4,8},起始索引 = 0,目标值为 10。所以 …

java recursion

3
推荐指数
1
解决办法
1804
查看次数

标签 统计

recursion ×5

java ×2

algorithm ×1

c++ ×1

computer-science ×1

fibonacci ×1