家庭作业,试图学习递归是正确的吗?

时间:2014-09-30 03:16:56

标签: recursion

好的,递归给了我“编码器阻止”我本周有2个家庭作业,其中一个就是以下......

设计一个接受整数参数的函数,并返回所有整数的总和 1直到作为参数传递的数字。例如,如果是50 通过 作为一个论点,福 nction 将返还总和 1,2,3,4, ... 0.50 。使用递归来计算总和。

这是我的解决方案......我知道这是如何工作的吗?这本书通过一些伪造的伪代码教我们,所以我知道它不是“真正的”代码......

Function Integer SumAll(Integer Number)

  If Number > 0 Then
   Return Number + SumAll(Number-1)      
  Else
   Return 0
  End If

End Function

好的我认为就是这样,我用c ++编写了这个来测试它。

#include <iostream>

using namespace std;

int SumAll(int Number){

  if (Number > 0) {
    return Number + SumAll(Number-1);
  }
}

int main(){
  cout<<SumAll(2);
  return 0;
}

1 个答案:

答案 0 :(得分:0)

你的C ++代码是错误的,因为需要在递归函数本身中处理基本情况。

你的伪代码基本上是正确的,只是当Number&lt;时它不起作用。 0;在这种情况下你应该真的有错误信息。

我同意你不可能在黑暗中工作的评论;使用真正的编程语言。你的伪代码看起来很像Pascal,所以也许你可以在这里使用Free Pascal。否则,我建议Python

在Python 3中,代码如下所示:

def sum_all(number):
    if number > 1:
        return number + sum_all(number-1)
    elif number == 1: # base case
        return 1
    else:
        raise Exception("negative number")

print(sum_all(10))

将正确返回55。

当我上学时,老师也使用了类似于Pascal的某种伪代码。我们很早就同意使用Turbo Pascal,这对我帮助很大,因为我能够在PC上测试东西。