求助:一个C++递归的问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 16:57:52
#include <iostream>
using namespace std;

//在显示屏上输出一个由星号组成的菱形
void Diamond(int n);

int main()
{
Diamond(5);
}

void Diamond(int n)
{
int i, j;
for(i=0;i<n;i++)
{
for(j=0;j<=n-i;j++)
cout << " ";
for(j=0;j<(2*i-1);j++)
cout << "*";
cout << endl;
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
cout << " ";
for(j=0;j<(2*(n-i)-1);j++)
cout << "*";
cout << endl;
}
}

请问:
如果只能用递归的方法编写Diamond这个函数,应该怎样编写呢?
先谢谢啦?

#include <iostream>
using namespace std;
void pr( int n, char ch) //这里用了递归
{ if(n==1) cout<<ch;
if(n>1){ cout<<ch; pr(n-1, ch); }
}

void dm( const int l,int n) //这里打印某行内容
{ if( n <= l ){ pr(l-n,' '); pr(2*n-1,'*'); }
if(n>l&&n<2*l){ pr(n-l,' '); pr(4*l-2*n-1,'*');}
cout<<endl;
}

void Dm( int l, int n=1) //这里也是使用递:
{ if(n<2*l){
dm(l,n); Dm(l,n+1);
}
}

int main()
{
Dm(5);
}

//使用递归是为了让程序变得简洁,但这个题目使用递归不能达到这个目的
//记住任何地方,迭代和递归都是可以互相代替的,但递归不一定都会简化程序

这个好像没办法递归

我试了下,好像不行!不过你那个太复杂了,用数组指针多好