2010-11-02 81 views
1

如果号码5是给我们,它需要在控制台上被打印出像1,2,3,4,5,这需要递归地进行。 (爪哇优选)递归号印刷

如果你想知道这些都不是作业的问题。我一个星期练我的期中从现在开始。

对不起不张贴我的工作。我在做类似下面:但在哪里打印数量的剩余部分,以及如何感到困惑停止递归调用该方法(N - 1)。雅各和他的职位帮助了我。感谢所有帮助过我的人。

public void writeNums(int n) { 
    if (n < 1) 
     throw new IllegalArgumentException(); 
    if (n == 1) { 
     System.out.print("1, "); 
    } 
    writeNums(n - 1); 
+2

这将是一个更好的学习锻炼,如果你做的代码自己的第一切割,并张贴在这里,如果你有问题... – 2010-11-02 14:32:16

+4

,如果你问我们首先它是没有太大的惯例。你有多远?你目前的尝试是什么样子? – winwaed 2010-11-02 14:33:01

+0

个人而言,我想这个分类功课。即使从技术上讲,没有具体的作业问题,但似乎也有一个来自以前的论文的问题。 – Jaydee 2010-11-02 14:41:14

回答

8

我们不打算写你的代码你,但递归的工作方式是,你有一个自称,传递一些参数,对于每个调用转换功能。它需要处理“基本情况”,其中函数做了一些事情,但不需要再调用自己,并且还处理“一般情况”,其中函数做了一些事情,并调用自己来完成任何需要完成的事情。所以:

function printNumbersUpTo(current) 
    if current is 1, print 1 and return. //base case 
    otherwise, call printNumbersUpTo(current - 1), then print current, and return. //general case 
2

让我们通过编写并没有做太多的功能启动,但它是基本的递归函数

void Print(int num) 
{ 
    if (num <= 0) 
     return; 

    Print(num - 1); 
} 

现在尽量想在哪里添加atual打印到控制台一些明显的骨架以便号码以正确的顺序出现。

0
private static String Print(int num) { 
    if (num <= 1) // base case 
     return Integer.toString(num); 
    else 
     return Print(num - 1) + ", " + num; 
    } 
}