纠正一下,是run 15行时,输出的 ”the topN is 3“。
谢谢

解决方案 »

  1.   

    看到你问的问题,我想你应该是初学编程吧。
    你这个问题实际上表现出来的是你对递归的不理解首先,Java的static和C语言的static根本不同,Java的static只是表示声明的域或方法是类的而不是对象的至于递归,我简单的和你说一下
    函数递归的实质就是函数层层递进
    举个例子:void func(int i) {
        if (i == 0) {
            return;
        } else {
            printf("This is func %d\n", i);
            func(i-1);
            printf("This is func %d\n", i);
        }
    }调用 func(5),结果是什么?// Output
    This is func 5
    This is func 4
    This is func 3
    This is func 2
    This is func 1
    This is func 1
    This is func 2
    This is func 3
    This is func 4
    This is func 5
    然后从本质上分析一下递归(需要一定的汇编语言知识):
    一个函数中的变量称为局部变量,局部变量保存在栈中,当调用一个函数时,其拥有的局部变量入栈,而当函数返回时,其所拥有的局部变量便会出栈,所以说局部变量在函数外是不能被使用的。
    结合上面的例子,调用func(5)时,传入的参数i=5入栈,当在func(5)中调用func(4)时,func(4)的参数i=4入栈,接下来func(4)返回,i=4出栈,程序继续从func(5)中的调用func(4)的下一句执行,这时的局部变量i仍然是在func(5)中之前入栈的i=5。
    (为了便于理解,简化了很大一部分内容,事实上当调用一个函数时所做的操作比这些要多)我写的不见得好理解,自己网上 Google 一下,先搞懂了递归再说吧
      

  2.   

    没问题~~~
    结贴记得给个分哈~~~hi, 想问你个编程的问题,就是我发的这个帖子http://bbs.csdn.net/topics/390674192?page=1#post-396393786,能否帮忙看下,面试的时候让写的~谢过