gpt4 book ai didi

c++ - 为什么这个递归函数有效?

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

<分区>

所以我的一个 friend 正在上他的第一个 CS 类(class),并提到他在他的第一个程序中使用了递归。他给我发了下面的代码。马上我注意到他没有捕捉到他的递归调用的返回值,我认为它不会起作用。但他坚持认为它确实有效,所以我试用了他的程序,令我惊讶的是它完全按照预期运行。忽略这是从 A 点到 B 点的愚蠢方法这一事实,为什么这甚至有效?

我正在研究他发给我的东西,并在 if 语句后添加了一个 cout。除此之外,第一段代码和第二段代码完全相同。

如果我为第一个程序输入以下内容,这就是我得到的...

Enter a Number: 10

You entered: 10 Is this correct? (Y/N): N

Enter a Number: 12

You entered: 12 Is this correct? (Y/N): Y

main() = 12

然后如果我对第二个程序做同样的事情,这就是我得到的...

Enter a Number: 10

You entered: 10 Is this correct? (Y/N): N

Enter a Number: 12

You entered: 12 Is this correct? (Y/N): Y

main() = 6300096

这是怎么回事!?

#include <iostream>
#include <cstring>
#include <cctype>

using namespace std;

int getNum()
{
cout << "Enter a Number: ";
int x;
cin >> x;
cin.ignore(100, '\n');

while(x < 0) {
cout << "Please enter amount greater than 0: ";
cin >> x;
cin.ignore(100, '\n');
}

cout << "You entered: " << x << " Is this correct? (Y/N): ";
char response;
cin >> response;
cin.ignore(100, '\n');

if (response != 'Y') {
getNum();
} else {
return x;
}
}

int main() {

cout << "\nmain() = " << getNum() << endl;

return 0;
}

顶部和底部之间的唯一区别是 if 语句之后的 cout 语句。

#include <iostream>
#include <cstring>
#include <cctype>

using namespace std;

int getNum()
{
cout << "Enter a Number: ";
int x;
cin >> x;
cin.ignore(100, '\n');

while(x < 0) {
cout << "Please enter amount greater than 0: ";
cin >> x;
cin.ignore(100, '\n');
}

cout << "You entered: " << x << " Is this correct? (Y/N): ";
char response;
cin >> response;
cin.ignore(100, '\n');

if (response != 'Y') {
getNum();
} else {
return x;
}
cout << "returning... " << x;
}

int main() {

cout << "\nmain() = " << getNum() << endl;

return 0;
}

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