【发布时间】:2017-05-16 13:54:12
【问题描述】:
我对递归的工作原理有了一点了解。堆栈提供的变量的调用和不同的上下文,用于存储先前调用的函数返回的值。
例如,
void Factorial(int n)
{
if(n==0) return 0;
else if(n==1) return 1;
else
{
return n*Factorial(n-1);
}
}
在这个用于计算给定数字的阶乘的递归函数中,我知道假设给定 n 为 5 的第一次调用将是 5*Factorial(4*Factorial(3....的基本条件))然后它会按照总结值的顺序返回,例如 1*2*3*4*5=240。
我不明白的是这段代码以相反的顺序打印单链表的项目。
void ReversePrint(Node head) {
if(head==null)
{
return;
}
else
{
ReversePrint(head.next);
System.out.println(head.data);
}
}
据我所知,链表函数的元素数量是有限的,
首先, 由于 head 不为 null,它将进入 else 条件,并且 head 将等于 head.next 直到它变为 null。然后呢?
我可能无法准确地表达我的问题。希望你能解释一下。提前致谢。
【问题讨论】:
-
我认为该问题至少有 543 个重复项...
-
是的,似乎没有人回答我的问题。如果是这样,何必再问?
标签: java recursion singly-linked-list