gpt4 book ai didi

c - 使用递归求数字 + 和 - 的总和 (c)

转载 作者:行者123 更新时间:2023-11-30 21:28:17 25 4
gpt4 key购买 nike

我需要在仅使用递归(不允许使用循环)时找到数字、+ 和 - 序列的总和。

我只能更改函数,仅此而已,包括函数中的指针(并且不能向其中添加任何其他内容)。除了 stdio.h 之外,我也不允许使用任何其他库。

#include <stdio.h>

#define MAX_LENGTH 100

int calc_sum_string(char *s);

int main() {
char s[MAX_LENGTH];
scanf("%s", s);
printf("%d", calc_sum_string(s));
return 0;
}

int calc_sum_string(char *s) {
int sum = s[MAX_LENGTH];
if (*s == '\0'){
return sum;
}
if (*s == '+'){
sum = calc_sum_string(s-1)+ calc_sum_string(s+1);
}
if (*s == '-'){
sum = calc_sum_string(s+1) - calc_sum_string(s-1);
return sum;
}

输入:7-8+9
输出:8

最佳答案

#include <stdio.h>

#define MAX_LENGTH 100

//Stringification
#define S_(n) #n
#define S(n) S_(n)

int calc_sum_string(char *s);

int main(void){
char s[MAX_LENGTH+1];

scanf("%" S(MAX_LENGTH) "s", s);
printf("%d", calc_sum_string(s));

return 0;
}

int calc_sum_string(char *s){
//It is assumed that there is no space character in the character string.
//The string is not changed within this function.
int n, len;

if (*s == '\0' || 1 != sscanf(s, "%d%n", &n, &len)){
return 0;
}
return n + calc_sum_string(s + len);
}

关于c - 使用递归求数字 + 和 - 的总和 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com