相关疑难解决方法(0)

了解递归函数的工作原理

正如标题所解释的那样,我有一个非常基本的编程问题,我还没有能够理解.过滤掉所有(非常聪明)"为了理解递归,你必须首先理解递归." 各种在线线程的回复我仍然没有得到它.

理解当面对不知道我们不知道的事情时,我们可能倾向于提出错误的问题或者错误地提出正确的问题我会分享我"想"我的问题,希望有类似观点的人可以分享一些一点点知识,有助于我打开递归灯泡!

这是函数(语法用Swift编写):

func sumInts(a: Int, b: Int) -> Int {
    if (a > b) {
        return 0
    } else {
        return a + sumInts(a: a + 1, b: b)
    }
}
Run Code Online (Sandbox Code Playgroud)

我们将使用2和5作为我们的论点:

println(sumInts(a: 2, b: 5))
Run Code Online (Sandbox Code Playgroud)

显然答案是14.但我不清楚这个价值是如何实现的.

这些是我的两个挂断:

  1. 递归调用该函数直到满足条件.那个条件是a> b.满足此条件时,返回0.乍一看,我希望返回值为0,这显然是不正确的.

  2. 在每次迭代中打印出'a'的值会产生一个我期望的值:2,3,4,5(此时5 + 1> b满足第一个条件:a> b)但我仍然不喜欢看看如何实现14的价值.

我的第一个想法是,类似于以下内容的东西神奇地发生:

var answer = a;
answer += a+1 until a > b;
return answer;   
Run Code Online (Sandbox Code Playgroud)

所以排除了魔法,我只是没有得到什么.我很想知道发生的事情不仅仅是隐含的.

如果有人能够解释在这种功能中技术上发生了什么以及为什么结果不是0以及最终如何a + sumInts(a: a + 1, b: b) = 14,我将永远负债累累.

language-agnostic recursion function

113
推荐指数
11
解决办法
3万
查看次数

使用Java中的递归的因子

我正在使用Java:The Complete Reference这本书学习Java.目前我正在研究Recursion主题.

请注意: stackoverflow上有类似的问题.我搜索了他们,但我没有找到我的问题的解决方案.我对以下程序中的逻辑感到困惑.

如果我运行以下程序,它会产生正确的输出,但我不明白逻辑.

  • 我不理解以下行中的逻辑:result = fact(n-1)*n;
  • 据我所知,如果我们传递n = 4的值,如下面的程序所示,
  • 然后,将3*4存储在结果中,即12.
  • 再次,事实(n-1)被称为.然后n变为3.
  • 然后将2*3存储在结果中,替换之前的12.
  • 我想你明白我被困在哪里/困惑.

  • 谢谢.

class Calculation
{
    int fact(int n)
    {
        int result;

       if(n==1)
         return 1;

       result = fact(n-1) * n;
       return result;
    }
}

public class Factorial
{
     public static void main(String args[])
     {
       Calculation obj_one = new Calculation();

       int a = obj_one.fact(4);
       System.out.println("The factorial of the number is : " + a);
     }
}
Run Code Online (Sandbox Code Playgroud)

java recursion

26
推荐指数
6
解决办法
22万
查看次数

标签 统计

recursion ×2

function ×1

java ×1

language-agnostic ×1