gpt4 book ai didi

C 程序在第一次递归调用后停止

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

我尝试使用字符数据类型来比较变量 reply 如果等于 y 它将继续调用函数 recursion(),但是,它只执行了 1 个 recursion() 调用,程序终止了。这只有在我使用 int 数据类型作为要比较的变量时才有效。请任何人告诉我为什么会这样?

#include <stdio.h>

void recursion()
{
char reply;
printf("Continue?:");
reply=getchar();
if(reply=='y')
{
printf("Continued\n");
recursion();
}
}

int main()
{
recursion();
return(0);
}

输出:

Laptop1:User1$ ./recur 
Continue?:y
Continued
Continue?:Laptop1:User1$

最佳答案

getchar() 将读取换行符,如果是,它将阻止它继续。

试试这个:

#include <stdio.h>

int getchar2()
{
int c;
do
{
c = getchar();
} while (c == '\n'); /* ignore newline characters */
return c;
}

void recursion()
{
int reply;
printf("Continue?:");
reply=getchar2();
if(reply=='y')
{
printf("Continued\n");
recursion();
}
}

int main()
{
recursion();
return(0);
}

关于C 程序在第一次递归调用后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34021694/

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