好的,递归给了我“编码器阻止”我本周有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;
}
答案 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上测试东西。