Recursion 家庭作业,尝试学习递归,对吗?

Recursion 家庭作业,尝试学习递归,对吗?,recursion,Recursion,好的,递归给了我“代码块”这个星期我有两个家庭作业,其中一个简单如下 设计一个函数,该函数接受一个整数参数并返回所有整数的和 1到作为参数传递的数字。例如,如果50是 通过 作为论据,傅 运动 我将退还这笔钱 1,2,3,4, ... .50 . 使用递归计算总和。 这是我的解决方案。。。我明白这是怎么回事吗?这本书是通过一些假的伪代码教我们的,所以我知道它不是“真实”的代码 我想是这样,我用C++写的,来测试它。< /P> #include <iostream> using na

好的,递归给了我“代码块”这个星期我有两个家庭作业,其中一个简单如下

设计一个函数,该函数接受一个整数参数并返回所有整数的和 1到作为参数传递的数字。例如,如果50是 通过 作为论据,傅 运动 我将退还这笔钱 1,2,3,4, ... .50 . 使用递归计算总和。

这是我的解决方案。。。我明白这是怎么回事吗?这本书是通过一些假的伪代码教我们的,所以我知道它不是“真实”的代码

<>我想是这样,我用C++写的,来测试它。< /P>
#include <iostream>

using namespace std;

int SumAll(int Number){

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

int main(){
  cout<<SumAll(2);
  return 0;
}
#包括
使用名称空间std;
int SumAll(int编号){
如果(数字>0){
返回编号+SumAll(编号-1);
}
}
int main(){

CUT< P>你的C++代码是错误的,因为基本情况需要在递归函数本身中处理。 您的伪代码基本上是正确的,只是当数字<0时它不起作用;在这种情况下,您应该有一条错误消息

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

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

def sum_all(数字):
如果数字>1:
返回编号+总和(编号-1)
elif编号==1:#基本情况
返回1
其他:
引发异常(“负数”)
打印(全部(10))
正确返回55


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

试着做一个演练。你真的用数字的值有用吗?这是整数参数……还有将递归从无限循环中停止的正确值?真的。考虑加法语句。<代码>和/代码>初始化了吗?应该添加到<代码> SUMALL(编号-1)< /代码>以获得<代码> SUMALL(数字)<代码> >记住这个函数将被调用多次,并且在调用之间不保留代码< >代码>和代码> @欧文。在这种情况下,您不需要初始化新变量(<代码>和>代码>),您已经拥有了<代码>编号<代码>。我不熟悉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;
}