在我的代码中,n
代表块数或no. of pyramids
。这段代码仅打印一个金字塔,但是我想编写一个递归函数,通过在每个连续的金字塔中添加两个元素来打印n
数量的pyramids
。
例如
if n == 3
第一座金字塔1 1 1 1
第二座金字塔
1 1 1 1 1 1 1 1 1
第三座金字塔
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#include "pch.h"
#include <iostream>
//-------------------------------------------------------Function for Pyramid---------------------------------------------------------------
int f(int n)
{
int no_rows, no_columns;
no_columns = n;
no_rows = n - 1;
//-------------------------------------------------------Loop for the Pyramid---------------------------------------------------------------
for (int i = 1; i <= no_rows; i++)
{
for (int j = 0; j < no_columns; j++)
{
std::cout << "*";
}
std::cout << "\n";
no_columns = no_columns - 2;
for (int k = 0; k < i; k++)
{
std::cout << " ";
}
}
if (n == 0) return -1;
return f(n);
}
int main()
{
int n;
std::cout << "Please Enter the number of Blocks: ";
std::cin >> n;
//-------------------------------------------------------Printing the n blocks---------------------------------------------------------------
std::cout << f(n) << std::endl;
std::cout << f(n + 2) << std::endl;
std::cout << f(n + 4) << std::endl;
system("pasue");
}
答案 0 :(得分:1)
我定义以下例程来编写底长为bl
的金字塔。
这对您来说很好。
void writePyramid(int bl)
{
for (int j = bl, j_space=0; j>0; j-=2, ++j_space)
{
for(int k=0; k< j_space; ++k){
std::cout << " ";
}
for (int l = 0; l<j; ++l){
std::cout << "*";
}
std::cout << "\n";
}
}
答案 1 :(得分:0)
他希望递归地完成所有工作,所以像这样:
void writePyramid(int bl)
{
if (bl > 4)
writePyramid(bl - 2);
for (int j = bl, j_space=0; j>0; j-=2, ++j_space)
{
for(int k=0; k< j_space; ++k){
std::cout << ' ';
}
for (int l = 0; l<j; ++l){
std::cout << '*';
}
std::cout << '\n';
}
}
和 writePyramid 的唯一调用可以完成所有操作