输出倒等腰三角形解决思路

输出倒等腰三角形
如题 1.用两个for 一个"*"输出一个倒等腰三角形
     2.用一个递归不用循环输出一个倒等腰三角形
     ***********
      *********
       *******
        *****
         ***
          *
输出倒等腰三角形解决思路
或者有更好思路的也可以说下

------解决方案--------------------
只会用循环,如果对格式化输出熟悉的话应该更简单
    int nNum ;
    cin >> nNum;
    for (int i = nNum; i  >= 0 ; i-=2)
    {
        for (int j = 0; j != nNum; j++)
        {
            if (j < (nNum-i)/2 
------解决方案--------------------
 j >= i+(nNum-i)/2)
            {
                cout << " ";
            }
            else
            {
                cout << "*";
            }
        }
        cout << endl;
    }

------解决方案--------------------
string f(int, int);
int main()
{
int n, i=0;
cin>>n;
string s=O(i, n);
cout<<s;
}
string f(int i, int n)
{
if (i==(n+1)/2) return "";
return string(i, ' ')+string(n-2*i, '*')+"\n"+f(i+1, n);
}

------解决方案--------------------
感觉这题用递归是吃力不讨好啊
没有写出让自己很满意的,就不发递归版本的了
    int n=6;
    for(int i=0; i<n; i++)
    {
        printf("%*s", i, "");
        for(int j=0; j<2*(n-i)-1; j++)
            printf("*");
        printf("\n");
    }

------解决方案--------------------
#include <stdio.h>
int main()
{
char str[] = "***********";
int len = sizeof str - 1;

for(int i=0; i<=len/2; ++i)
printf("%*.*s\n", len-i, len-i*2, str);

int fir = 0;
while(fir < len)
{
puts(str);
str[fir++] = str[--len] = ' ';
}