java - 该算法的基本情况是什么?

标签 java algorithm recursion

我正在学习递归并理解其中的大部分内容,但这个具体的问题让我感到困惑,它相当基础,但我不明白哪个陈述是基本情况,我认为这是打印行,但显然可能是错误的。我知道最终结果是什么,但似乎无法理解它是如何一步步完成的。

代码:

private static final String DIGIT_TABLE = "0123456789abcdef";


public static void printIt(long n, int base) {

if(n>=base)
  printIt(n / base, base);
System.out.print(DIGIT_TABLE.charAt((int) n % base));

}

最佳答案

基本情况是 n<base ,或者当剩余数字可以表示为基数 base 中的单个数字时.

如果基数为 16,程序将如何执行的示例如下:

n_1: 0x1a5
n_2: 0x1a
n_3: 0x1
****
print n_3 % 16 -> 1
print n_2 % 16 -> a
print n_1 % 16 -> 5

在标记为 **** 的点,条件的计算结果为假,因此它不会进入无限递归。

关于java - 该算法的基本情况是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032592/

相关文章:

java - 计数最频繁。数组中的用户

c++ - 滑动最大窗口暴力法

java - 如何为组合编写递归函数

javascript - 暴力算法会导致堆栈溢出吗? (递归)

c++ - 模板互递归

java - 为什么我们在 Deque 中有 offer(E e) 和 offerLast(E e) 方法,即使它们解决的是相同的目的

java - 如何在java中使用系统dsn连接数据库?

python - 哪条矩形线先命中

python - 比较多维列表范围的最快方法

java - 暂停和恢复计划任务