思维体操:用c#简单实现按一定规则输出有序数列

要求:输入一个整数num,打印出如下规则的一组数字:
1
2   3
4   5   6
7   8   9   10
11   12   13   14   15
... ...

比如输入数字7,应该有如下输出:

1
2   3
4   5   6
7  

下面是用c#的简单实现:

ExpandedBlockStart.gif 代码
         public   static   void  Print( int  num)
        {
            
int  counter  =   1 ;
            
for  ( int  i  =   0 ; i  <  num; i ++ )
            {
                StringBuilder sb 
=   new  StringBuilder( 100 );
                
for  ( int  j  =   0 ; j  <  i  +   1 ; j ++ )
                {
                    
int  output  =  j  +  counter;

                    sb.AppendFormat(
" {0}   " , output);
                    
if  (j  ==  i)
                    {
                        counter 
=  output  +   1 ; // 下一行的第一个数字是前一行的最后一个加1
                    }
                    
if  (output  ==  num)
                    {
                        counter 
=  num; // 是最后一个数字 跳出循环
                         break ;
                    }
                }
                Console.WriteLine(sb.ToString());
                
if  (counter  ==  num)
                {
                    
return ;
                }
            }

        }

        
static   void  Main( string [] args)
        {
            Print(
1 );
            Console.WriteLine(
" -------------- " );

            Print(
7 );
            Console.WriteLine(
" -------------- " );

            Print(
10 );
            Console.WriteLine(
" -------------- " );

            Print(
15 );
            Console.WriteLine(
" -------------- " );

            Print(
30 );
        }

分析上面的代码,我个人认为这是最简单明了符合常规认知的一种实现:要输出有序序列的数字,找出数字排列的规律,找到这个规律,最后就是水到渠成的编程实现罢了。
最后卖个关子,其实它还有一种代码更加简洁的实现,是从某高手那里偷师的,大家不妨动手练习一下吧,这个还是很能考验一个人的逻辑思维的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值