首页 新闻 会员 周边 捐助

C# 一个基础题目,输入一串数字,例如:1,5,8,9,11......

0
悬赏园豆:5 [已解决问题] 解决于 2014-12-12 22:58

输入一串数字,例如:1,5,8,9,11......

 

要求前一个数字分别跟后面的数字组成一个数字。放入一个数组内

1: 15  18  19  111

5: 58 59 511

 8:89 811

 9:911

所以得到的数组内的元素分别是:15  18  19  111 58 59 511 89 811 911

应该怎么用递归算法做出来呢?

或者给个例子参考一下,脑子有点转不过来

Mr丶Lee的主页 Mr丶Lee | 初学一级 | 园豆:10
提问于:2014-12-11 23:56
< >
分享
最佳答案
1

双重循环就行了。输入字符串为数组。

for(int i=0;i<arr.Length;i++)

{

    for(int j=i+1;j<arr.Length;j++)

  {

    var temp = arr[i].ToString()+arr[j].ToString();

    //把temp输出或者加入结果集合就行。

  }

}

收获园豆:5
幻天芒 | 高人七级 |园豆:37207 | 2014-12-12 08:56

好的。谢谢了

Mr丶Lee | 园豆:10 (初学一级) | 2014-12-12 22:57
其他回答(2)
0

楼上的循环就可以啊。

Mr.Brian | 园豆:1518 (小虾三级) | 2014-12-12 10:49
0

其实递归实现也很简单的,只要找到退出点,把双重循环改造下就行;

       static void Main(string[] args)
       {

           int[] numbers = { 1, 5, 8, 9, 11,23 };
           Console.WriteLine(string.Join("-", numbers));

           Combine(numbers, 0,1);
           Console.ReadKey();
       }

       static void Combine(int[] numbers, int i,int j)
       {
           if (i >= numbers.Length ) {
           }
           else {
              
               if (j >= numbers.Length) {
                   i++;
                   j = i + 1;
               }
               else {
                   Console.WriteLine(string.Format("{0}{1}", numbers[i], numbers[j]));
                   j++;
               }
               Combine(numbers, i,j);
           }
       }

yangsofter | 园豆:199 (初学一级) | 2014-12-12 11:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册