设置递归调用次数的限制 - Java

时间:2017-08-09 19:46:15

标签: java recursion red-black-tree

我有一类红黑树。

我想按顺序打印它(所以数字会从最小到最小的打印)。

这是打印方法:

public void printTreeInOrder(Node node){
        //in-order printing (sorted)
        if (!(isNull(node))){
            printTreeInOrder((node.getLeft()));
            System.out.println(node.getValue());
            printTreeInOrder(node.getRight());
        }
    }

但我想只打印k个最小的数字。如果我可以限制递归调用的数量会很容易,比如持有一个sentinal并计算调用该方法的次数。

但是我如何在递归函数中使用它呢?

我认为制作一个全局变量k并在函数中计算它,但它听起来不对,和k本身就是一个变量,它不是常数。 我有办法计算递归函数中打印的数字量吗?

谢谢,

艾伦

1 个答案:

答案 0 :(得分:2)

该方法返回剩余要打印的元素数,并接受可从此节点打印的最大元素数。

package main

import (
    "fmt"
)

func main() {
    x := "hello"
    q := fmt.Sprintf("\\\"%s\"\\", x)
    fmt.Println(q)
}