运用递归写三角形

1.带for循环的:

View Code
 1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 int m;
5 int deal( int n )
6 {
7
8 if( n == 1 )
9 {
10 for( int i = 0; i <= (m-n); i++ )
11 printf( " " );
12 printf( "*\n" );
13 }
14 else
15 {
16 for( int i = 0; i < (m-(1+(n-1)*2)/2); i++ )
17 printf( " " );
18 for( int i = 0; i < (1+(n-1)*2); i++ )
19 printf( "*" );
20 puts( " " );
21 deal( n-1 );
22 }
23 }
24 int main()
25 {
26 int n;
27 scanf( "%d", &n );
28 m = n;
29 deal( n );
30 system( "pause" );
31 }

 

2.不用for循环的(狗神给的灵感……囧,这么多函数……本来想两个函数果断过的……):

View Code
 1 #include<stdio.h>
2 #include<stdlib.h>
3 int print1( int n )
4 {
5 if( n == 0 )
6 {
7 puts( " " );
8 return 0;
9 }
10 printf( "*" );
11 return print1( n-1 );
12 }
13
14 int print2( int n )
15 {
16 if( n == 0 )
17 return 0;
18 printf( " " );
19 return print2( n-1 );
20 }
21
22 int deal( int n )
23 {
24 static int a = 1;
25 if( n == 0 )
26 {
27 a = 1;
28 printf( "*\n" );
29 return 0;
30 }
31 print1( 2*n+1 );
32 print2( a );
33 a++;
34 return deal( n-1 );
35 }
36
37 int main()
38 {
39 int n;
40 while( scanf( "%d", &n ) && n )
41 {
42
43 deal( n -1 );
44 }
45 return 0;
46 }

 

转载于:https://www.cnblogs.com/zsj576637357/archive/2012/02/24/2367264.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值