gpt4 book ai didi

c - 递归打印数字的累加值

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:54 25 4
gpt4 key购买 nike

我必须只使用递归来打印数字的累加值(不允许循环或转到),我写了其他类似的功能,但效果很好,但不是这个。

对于这个 print_accumulated(0, 10, 40):a(0)-循环开始,b(10)-迭代值,c(40)-最大值

它只打印 10 30,而程序应该打印 0 10 30 60,如果我使用另一个变量而不是 a(例如求和)它打印 0 0 0 0。感谢您提供任何帮助和建议。

void print_accumulated(double a, double b, double c)
{
if (a<c)
{
printf("%.0f ", a+=b);
print_accumulated(a+b, b, c);
}
}

示例它应该如何工作但对于不同的功能 (pow)print_square(0, 10, 40) 它打印 0 100 400 900

这个很好用

void print_square(double a, double b, double c)
{
if (a<c)
{
printf("%.0f ", pow(a, 2));
print_square(a+b, b, c);
}
}

最佳答案

它不打印 0 因为你打印了 a+=b , 除了设置 aa+b , 返回结果 (a+b) - 所以你第一次通过,你打印(0+10)这是 10。

它不打印 60,因为 60 大于 40。既然你说 40 是最大值,你为什么认为它应该打印 60?而且,准确地说,如果您确实希望打印 max_value,则应将 if 测试更改为 (a <= c) , 自 (a<c)这意味着如果它等于 max_value,它就不会打印它。

此外,您似乎在每个循环中增加了两次。曾经在a+=b , 然后当你递归调用 print_accumulated(a+b,...) (因为此时 a 已经增加了 b)。这就是为什么它每次跳过 20,而不是 10(虽然你没有说这是一个问题,但似乎与 iteration_value 暗示它应该做的不同)。

关于c - 递归打印数字的累加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57727604/

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