Previously, we used the for loop to solve such problems .. Recursive output is really convenient.
Recursive output square:
View code
# Include <stdio. h>
# Include <string. h>
# Include <algorithm>
# Include <stdlib. h>
# Include <math. h>
# Include <algorithm>
# Include <vector>
# Include <queue>
# Include <deque>
# Include <stack>
# Include <functional>
# Include <map>
# Include <set>
# Include <time. h>
# Include <iostream>
# Include <fstream>
Using namespace STD;
Int N;
Void fun1 (int n)
{
If (n = 0)
{
Puts ("");
Return;
}
Printf ("% C", 3 );
Fun1 (n-1 );
}
Void fun2 (int n)
{
If (n = 0)
{
Puts ("");
Return;
}
If (n = 1 | n = N)
Printf ("% C", 3 );
Else
Printf ("");
Fun2 (n-1 );
}
Void solve (int n)
{
Fun1 (N );
For (INT I = 2; I <= n-1; I ++) // A for loop is used.
Fun2 (N );
If (n> 1)
Fun1 (N );
}
Int main ()
{
While (scanf ("% d", & N )! = EOF)
{
Solve (N );
}
Return 0;
}
Recursive output equi triangle:
View code
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <functional>
#include <map>
#include <set>
#include <time.h>
#include <iostream>
#include <fstream>
using namespace std;
int N;
void fun1( int n, int num)
{
if( n == 0 )
{
puts("");
return;
}
if( abs(N / 2 + 1 - n) == num )
printf("%c",3);
else
printf(" ");
fun1(n - 1,num);
}
void fun2( int n )
{
if( n == 0 )
{
puts("");
return;
}
printf("%c ",3);
fun2(n-1);
}
void solve( int n )
{
for( int i = 1; i < n/2; i++)
fun1(n, i - 1);
fun2(n / 2);
}
int main( )
{
while ( scanf("%d", &N) != EOF )
{
N = N * 2;
solve( N );
}
return 0;
}
Recursive output Diamond
View code
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <functional>
#include <map>
#include <set>
#include <time.h>
#include <iostream>
#include <fstream>
using namespace std;
int N;
void fun1( int n, int num)
{
if( n == 0 )
{
puts("");
return;
}
if( abs(N / 2 + 1 - n) == num )
printf("%c",3);
else
printf(" ");
fun1(n - 1,num);
}
void solve( int n )
{
for( int i = 1; i < n/2; i++)
fun1(n, i - 1);
for( int i = n/2; i >= 1; i--)
fun1(n, i - 1);
}
int main( )
{
while ( scanf("%d", &N) != EOF )
{
N = N * 2;
solve( N );
}
return 0;
}