【发布时间】:2021-01-02 16:46:55
【问题描述】:
我想要做的是返回所有低于或等于 n 之类的数字的总和,它们是 3 或 5 的倍数,我尝试在 c++ 中使用递归函数来执行此操作:
#include <iostream>
int getsum(int n);
int main(int argc, char *argv[]){
std::cout<<getsum(10);
return 0;
}
int getsum(int n){
if(n%3==0 || n%5==0)
return n+getsum(n-1);
if(n==0)
return 0;
else
{
return getsum(n-1);
}
}
然后当我尝试运行此代码时,我得到分段错误错误:
Segmentation fault (core dumped)
我的递归函数有问题吗?
*操作系统:Ubuntu 18.04
【问题讨论】:
-
这应该返回 33 for n=10
-
0 % 3是0。 -
什么是 0 % 3?什么是 0% 5?将您的基本案例移到顶部。无论如何都不是递归的好用例。
-
让
if(n == 0)成为第一件事。 -
用你的开发环境中应该附带的调试器来单步调试这个函数几次,你会非常非常快地看到发生了什么。不要浪费时间。学习使用调试器。
标签: c++ recursion segmentation-fault