java这个算法的基本情况是什么?
我正在学习递归并理解它的大部分内容,但这一点让我感到困惑,它相当基本,但我不知道哪一条语句是基本情况,我认为这是打印行,但显然可能是错误的。我知道最终的结果是什么,但似乎无法理解它是如何一步步实现的
代码:
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));
}
# 1 楼答案
在n进制数字系统中,0-(n-1)中的所有数字都可以用一位数字表示法表示。例如,在二进制(2进制)中,0和1可以表示为一位数,而在十六进制(16进制)中,0-15之间的所有数字都可以表示为一位数(a=10,b=11…f=15)。您的程序通过将长n除以base来减少它,直到它小于base,然后在该base系统中打印它的值。我假设这里的基数是16,因为你的字符串是直到'f'。这意味着您的方法将以n的十六进制表示形式打印MSB。请注意,如果您存储了“n/base”的所有商,您将得到相反的十六进制表示形式
# 2 楼答案
基本情况是当
n<base
时,或者当剩余的数字可以表示为基本base
中的单个数字时下面是一个示例,说明了如果基数为16,程序将如何执行:
在标记为
****
的点处,条件的计算结果为false,因此它不会进入无限递归# 3 楼答案
如果你只是在寻找递归关系的基本情况或终止条件,那么试试这个