输入一串数字,例如: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
应该怎么用递归算法做出来呢?
或者给个例子参考一下,脑子有点转不过来
双重循环就行了。输入字符串为数组。
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输出或者加入结果集合就行。
}
}
好的。谢谢了
楼上的循环就可以啊。
其实递归实现也很简单的,只要找到退出点,把双重循环改造下就行;
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);
}
}