gpt4 book ai didi

c - 使用递归扫描多个数字并计算扫描了多少个偶数(在c中)

转载 作者:行者123 更新时间:2023-11-30 18:33:04 24 4
gpt4 key购买 nike

问题是“编写一个在输入 -1 时结束的递归函数,然后返回扫描偶数的次数。

naturals(int);
static void main() {
int num;
printf("enter numbers\n");
scanf("%d", &num);
naturals(num);
}

naturals(int num) {
int count = 0;
if (num % 2 == 0) {
count++;
}
if (num == -1) {
printf("%d", count);
return 0;
}
scanf("%d", &num);
return naturals(num);
}

我知道它在函数开始时将“count”重置为 0,我该如何解决这个问题?

最佳答案

这是一个利用 ?: 的好地方运算符:

#include <stdio.h>

int naturals(int count)
{
int num;

scanf("%d", &num);

return num == -1 ? count : naturals(num % 2 == 0 ? count+1 : count);
}

int main(int argc, char **argv)
{
printf("enter numbers\n");
printf("even numbers entered = %d\n", naturals(0));
}

我经过这里0作为调用 naturals 中的初始计数在main ,然后对于输入的每个数字 count如果数字是偶数则递增;否则我们只传递未递增的 count到下一次调用naturals 。在递归调用 naturals 之前我们检查输入的数字是否为-1;如果是,我们返回 count 的当前值,否则我们继续递归调用 naturals .

如果您愿意,return线路 naturals可以替换为

  if(num == -1)
return count;
else if(num % 2 == 0)
return naturals(count+1);
else
return naturals(count);

其功能相同。它的缺点是具有三个独立的 return IMO 中的陈述更令人困惑,但是 YMMV。

关于c - 使用递归扫描多个数字并计算扫描了多少个偶数(在c中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59488505/

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