gpt4 book ai didi

c++ - 大括号 - 递归

转载 作者:行者123 更新时间:2023-11-28 00:16:48 25 4
gpt4 key购买 nike

我之前读过一些关于使用大括号的问题,根据我的理解,如果只有一行代码,可以不使用大括号,但如果要使用多行代码,则需要使用括号.

我有一项作业,为了养成良好的习惯,老师确实要求我们在每种情况下都使用括号。他还允许我们研究和使用示例代码。

现在,我的问题是,我找到了一些不使用括号的示例代码。当我尝试将括号添加到代码中时,它使我的输出不正确。有人可以向我解释如何在多行代码中正确使用大括号,并就如何实现我正在寻找的结果提出建议。

输出正确时的代码如下:

void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
// n >= 1
{
if(i == n)
{
for(int j = 1; j <= n; j++) cout << '*'; cout << endl;
for(int j = 1; j <= n; j++) cout << '*'; cout << endl;
}
else
{
for(int j = 1; j <= i; j++) cout << '*'; cout << endl;
printStars(i+1, n); // recursive invocation

for(int j = 1; j <= i; j++) cout << '*'; cout << endl;
}
} // printStars

int main() {
int n;
int i=0;

cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;

printStars(i,n);

return 0;
}

当我尝试像这样“清理它”时:

void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
{
if(i == n)
{
for(int j = 1; j <= n; j++)
{
cout << '*';
cout << endl;
}
for(int j = 1; j <= n; j++)
{
cout << '*';
cout << endl;
}
}
else
{
for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
printStars(i+1, n); // recursive invocation

for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}
}
} // printStars

int main() {
int n;
int i=0;

cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;

printStars(i,n);

return 0;
}

最佳答案

问题是你在打印循环中放了太多:

    for(int j = 1; j <= i; j++)
{
cout << '*';
cout << endl;
}

应该是:

    for(int j = 1; j <= i; j++)
{
cout << '*';
}
cout << endl;

没有花括号的循环只能包含一个单个语句。这意味着使用 cout 的行尾打印仅在循环结束时调用。

这是使用大括号的完整代码:

void printStars(int i, int n)
// The calling program invokes this function as follows: printStars(1, n);
// n >= 1
{
if(i == n)
{
for(int j = 1; j <= n; j++){
cout << '*';
}
cout << endl;

for(int j = 1; j <= n; j++){
cout << '*';
}
cout << endl;
}
else
{
for(int j = 1; j <= i; j++){
cout << '*';
}
cout << endl;

printStars(i+1, n); // recursive invocation

for(int j = 1; j <= i; j++){
cout << '*';
}
cout << endl;
}
} // printStars

int main() {
int n;
int i=0;

cout << "Enter the number of lines in the grid: ";
cin>> n;
cout << endl;

printStars(i,n);

return 0;
}

关于c++ - 大括号 - 递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29720923/

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