递归 - 打印数字序列

时间:2010-11-24 17:59:33

标签: c#

这是序列

1,1,2,4,7,11,16,22,29 ....

需要使用递归函数

打印上述系列

3 个答案:

答案 0 :(得分:6)

我甚至不会把它写成递归:

static IEnumerable<int> Generate() {
    int value = 1, inc = 0;
    while(true) {
        yield return value;
        value += inc++;
    }
}

如果太深,递归通常很糟糕......然后:

foreach(int x in Generate().Take(n))
    Console.WriteLine(x);

你也可以用一种方法循环和打印......但那里的乐趣在哪里呢?

(这种方法是故意选择显示一种有用的技巧,而不是直接用作作业答案)

答案 1 :(得分:2)

这样的事情:

public void Numbers(int iteration, int number, int limit)
{
  if(iteration < limit) {
    Console.WriteLine(number);
    Numbers(iteration + 1, number + iteration);
  }
}

Numbers(0,1,5);

答案 2 :(得分:0)

public static void PrintNumbers(int current, int index)
{
 Console.Write(current + ", ");

 PrintNumbers(current + index, index + 1);
}

PrintNumbers(1, 0);

请注意,此回退不会终止,因此运行它会导致StackOverflowException。