Как с помощю рекурсии решить задачу?

MMM1
Дата: 25.06.2014 11:39:44
Скажите пожалуйста как можно вывести список всех n значных чисел цифры которых стоят в порядке возрастания.

Например для двухзначных можно было так:
        
For i = 1 To 9
For j = i To 9
WriteLine(i & j)
Next
Next


А если мы задаем программно количество чисел то я думаю так не получается. Скажите пожалуйста как быт?
ЕвгенийВ
Дата: 25.06.2014 12:53:21
MMM1,
Как то так :)
 Action<int, int> act1 = (a, b) =>
            {
                int i = 1;
                Action<int> act2 = null;
                act2 = (a1) =>
                 {
                     if (i <= b)
                     {
                         Console.Write("\t" + a1 + i);
                         i++;
                         act2(a1);                         
                     }
                 };
                Action<int> act3 = null;
                act3 = a3 =>
                {
                    if (a3 <= a)
                    {                        
                        act2(a3);
                        i = 1;
                        act3(++a3);
                    }
                };
                act3(1);
            };
            act1(9, 9);
Roman Mejtes
Дата: 25.06.2014 16:16:10
ЕвгенийВ,
x - количество цифр
(10^x) - 1 - максимально число
(10^x-1) - минимальное число

for (var i = (10^x-1); i < (10^x); i++)
console.writeln(i.ToString())

не?
Roman Mejtes
Дата: 25.06.2014 16:19:04
последнее условие не учёл, сори.
Roman Mejtes
Дата: 25.06.2014 16:37:39
Roman Mejtes,

        static void Main(string[] args)
        {
            const int digitCount = 4;
            for (var i = 1; i < 10; i++)
                GetNumber(digitCount, 1, i);
            Console.ReadLine();
        }

        public static void GetNumber(int deep, int current, int value)
        {
            var min = value % 10 + 1;
            if (deep > current)
                for (var i = min; i < 10; i++)
                {
                    var newvalue = value * 10 + i;
                    if (deep == current + 1) Console.Write(newvalue.ToString() + ",");
                    GetNumber(deep, current + 1, newvalue);
                }
        }

вот еще вариант :)
refreg
Дата: 25.06.2014 16:49:03
        public static void NumberString(int n, string prefix = "")
        {
            if (n == 1) {
                for (int i = 0; i <= 9; i++)
                    Console.WriteLine("{0}{1}", prefix, i);
            }
            else {
                for (int i = 0; i <= 9; i++) {
                    NumberString(n - 1, prefix + i.ToString());
                }
            }
        }
Cat2
Дата: 25.06.2014 18:42:12