【问题标题】:How do I include a termination condition?如何包含终止条件?
【发布时间】:2022-12-18 06:11:10
【问题描述】:

我是编程新手。 在大学里,我接到了一项任务,我必须检查错误的程序代码是否有错误。据我了解,缺少终止条件。如果有人能告诉我如何将它添加到程序代码中,我将不胜感激。我尝试了很多东西,但不幸的是 shell 没有给我任何东西。

程序代码:

#include <stdio.h>

unsigned int sum(unsigned int n) {
    return n + sum(n - 1);
}

int main(void) {
    unsigned int n = 0;
    printf("Summing up from 1 to n with n = ");
    if(scanf(" %u", &n) != 1) {
        printf("Error!");
        return 1;
    }
    printf("The sum is: %u.", sum(n));
}

【问题讨论】:

  • 拿一支铅笔和一张纸,记录如果调用 sum(2) 会发生什么。
  • 那么,sum(1) 应该是什么?添加条件检查 n1 并返回答案。不过,您可能希望终止于其他号码,例如 0,具体取决于您的定义。
  • 一般来说,递归规则最好先用数学的方式写出来,然后直接翻译成代码。如sum(0)=0, sum(n) = sum(n-1) + n for each n&gt;0。此规则包括清除停止条件。

标签: c recursion conditional-statements task termination


【解决方案1】:

尝试在 sum 函数中添加一个条件来停止这样的重复:

#include <stdio.h>

unsigned int sum(unsigned int n) {
    if (n>1)
    return n + sum(n - 1);
}

int main(void) {
unsigned int n = 0;
printf("sum up from 1 to n with n = ");
scanf(" %d", &n);
if(n < 1) 
{
printf("error!");
}
else
printf("The sum is: %u.", sum(n));
}

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 2015-12-20
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多