如何使用递归打印修改后的星号三角形图案? 我使用C++,我被要求使用递归来打印一个具有某种模式的三角形:
例如,如果用户输入整数4,控制台应输出以下内容: 编辑:如果用户输入整数3,控制台应输出以下内容: 这是我掌握的关于这个图案的所有信息 因此,我认识到每条线上的恒星模式是: 1,2,1,3,1,2,1,4最大值1,2,1,3,1,2,1 但我使用递归得到的最远结果是打印大小为n的三角形:如何使用递归打印修改后的星号三角形图案? 我使用C++,我被要求使用递归来打印一个具有某种模式的三角形:,c++,recursion,C++,Recursion,例如,如果用户输入整数4,控制台应输出以下内容: 编辑:如果用户输入整数3,控制台应输出以下内容: 这是我掌握的关于这个图案的所有信息 因此,我认识到每条线上的恒星模式是: 1,2,1,3,1,2,1,4最大值1,2,1,3,1,2,1 但我使用递归得到的最远结果是打印大小为n的三角形: void starprint(int n) { for (int i = 1; i <= n; ++i) { if (i == 1) std::cout <<
void starprint(int n) {
for (int i = 1; i <= n; ++i)
{
if (i == 1) std::cout << "*" << std::endl;
else
{
for (int j = 1; j <= i; j++)
{
std::cout << "*";
}
std::cout << std::endl;
}
if (i == n)
starprint(n - 1);
}
}
所以现在我被卡住了,因为模式有点奇怪,因为我对这些事情的本能是使用迭代而不是递归,我对递归有点不在行
任何关于如何实现这一点的建议都会非常有用。谢谢大家 对于这个序列,您有一个优雅的递归解决方案:
#include <iostream>
using namespace std;
void printstar(int n){
if(n == 1) {cout<<"1 "; return;}
printstar(n - 1);
cout<<n<<" ";
printstar(n - 1);
}
int main() {
printstar(4);
}
//output: 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1
模式不清楚。例如,对于n=1、n=2、n=3和n=5,答案是什么?此处的所有问题必须以纯文本形式包含问题本身的所有相关信息。这个问题必须被删除,奇怪的链接替换为相关信息。我想我理解这个模式,但如果你愿意,请随意添加示例。@Daniel,我添加了另一个模式示例,这两个是我在这项任务中仅有的示例。最大的值对双方都是一面镜子。这样想会更容易。非常感谢!这让我意识到我完全错误地处理了这个问题,现在我明白了。它比我原来的代码优雅多了,谢谢你,丹尼尔!
1 2 1 3 1 2 1 [4] 1 2 1 3 1 2 1
1 2 1 [3] 1 2 1
1 [2] 1
[1]