首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现循环关系

实现循环关系
EN

Stack Overflow用户
提问于 2022-05-16 07:51:42
回答 1查看 39关注 0票数 0

我试图用递归函数计算y= (1 +4+7+. 301) / (2 +5+8+.+ 272)表达式,但我写的内容不起作用。有人能告诉我我做错了什么吗?此版本返回退出代码-1073741571 (0xC00000FD)完成的错误>进程。

这是我的密码

代码语言:javascript
复制
int calcSum(int start, int end, int steep){
    if(start == 0){
        return 0;
    } else{
        return start + calcSum(start,end,steep);
    }
}
int main() {

    printf("y = %d", calcSum(1,301,3)/ calcSum(1,272,3));
    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-16 08:48:11

问题在于递归调用,您没有做任何事情来确保函数停止调用并因此中断。当您说要递归地添加数字时,您需要做三件事:调用相同的函数(显然),具有终止条件,在本例中实际上传递值,以便在每个调用中按照所需的顺序添加。

代码语言:javascript
复制
#include <stdio.h>

int calcSum(int start, int end, int steep){
 // Stop calling once you have added all numbers
        if(start<=end){
            return start + calcSum(start+steep,end,steep); // increment start with steep so that in each call the next term in the sequence is added.
        }
        else return 0; //return 0 after start > end as we don't need to add after that.
}
int main(void) {
    printf("y = %d", calcSum(1,301,3)/ calcSum(2,272,3));
    return 0;
}

下面是工作代码的样子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72255790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档