You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将递归实现的game函数转换为while循环迭代实现?

递归转迭代:C语言游戏函数的循环实现

先拆解原递归函数的核心逻辑:

  • 显示当前level对应的问题,接收用户答案
  • 若level < 8:
    • 答对则提升level,继续下一题
    • 答错则重置level为0,清屏后重新开始
  • 当level == 8时,提示通关

递归调用在这里只是用来重复执行上述流程,我们可以直接用while循环替代,把重复的逻辑放到循环体内,通过修改level变量来控制循环走向:

void game(void)
{
    int answer;
    // 循环直到level达到8(通关条件)
    while (level < 8) {
        printf("%s", Questions[level]);
        scanf("%d", &answer);
        
        if (is_right(level, answer)) {
            printf("Good Job!\n");
            level += 1;
        } else {
            printf("Sorry, you got the wrong answer. Try Again! \n");
            sleep(1);
            system("clear");
            level = 0;
        }
    }
    // 循环退出说明level >=8,触发通关提示
    printf("Great Job, You Won!");
}

关键说明:

  • 原递归中每次调用game()其实就是重新执行一次“提问-判断”流程,迭代版本用while循环直接包裹这个流程,避免了函数调用栈的开销
  • 答对时直接递增level,下一次循环会自动处理下一级问题
  • 答错时重置level为0,下一次循环会从第0级问题重新开始,和原递归逻辑完全一致
  • 当level达到8时,循环条件不满足,退出循环后显示通关信息,对应原递归的else分支

内容的提问来源于stack exchange,提问作者Frog2341

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:50:25