gpt4 book ai didi

c - 为什么这段代码是正确的?

转载 作者:行者123 更新时间:2023-11-30 21:41:48 25 4
gpt4 key购买 nike

#include <stdio.h>
void reverseSentence();

int main()
{
printf("Enter a sentence: ");
reverseSentence();

return 0;
}

void reverseSentence()
{
char c;
scanf("%c", &c);

if( c != '\n')
{
reverseSentence();
printf("%c",c);
}

我尝试了这段代码,我知道它是正确的,但我不知道为什么递归会起作用。看起来有点不直观。有人可以解释一下它为什么有效吗?另外,什么是\n到底在做什么?(我认为这就是我问题的答案所在)。谢谢。

最佳答案

名称reverseSentence对于递归来说相当糟糕。

发生的情况是它读取一个字符并将其保存在局部变量中。

然后,如果该字符不是换行符(==\n),它将再次调用自身。这将递归地发生,直到输入换行符。之后,它将打印其字符。

由于最后您将向上遍历调用堆栈,这将以相反的顺序调用不同的实例。 → 字符串将反向输出

关于c - 为什么这段代码是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47264263/

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