void Factorial(int n)
{
if(n==0) return 0;
else if(n==1) return 1;
else
{
return n*Factorial(n-1);
}
}
void ReversePrint(Node head) {
if(head==null)
{
return;
}
else
{
ReversePrint(head.next);
System.out.println(head.data);
}
}
添加一些额外的注释应该会有所帮助:
void ReversePrint(Node node) {
if (node == null) {
// An empty list has nothing to print.
return;
} else {
// First print the rest of the list.
ReversePrint(node.next);
// Then print this node.
System.out.println(node.data);
}
}
所以-本质上-
我将感谢任何帮助,我是一个初学者,因为你可能会告诉。提前谢谢大家! 我可以用递归来做这个,但我想学习弄清楚这个方法。
我在Hackerrank上解决反向挑战的指纹 方法接受一个参数-链表的头部。您不应该从stdin/console中读取任何输入。头部可能是空的,所以不应该打印任何东西。按照与stdout/console相反的顺序打印链表的元素(使用printf或cout),每行一个。 NB:节点的结构为struct Node{int data;struct Node*next;}
我试图以相反的顺序打印一个链表,但实际上没有使用递归进行反转,但我的输出结果非常奇怪。看起来我的代码基本上选择了第一个节点,并在打印完链表的其余部分(按原始顺序)后将其打印出来。我所写的代码(据我所知)是正确的,并且与internet上解决此问题的代码相匹配。 这是我的代码: 以下是节点类: 这是我给出的输入,然后是输出: 这里发生的另一个奇怪的事情是,如果我改变递归的条件,假设我这样做: 然后是
我需要实现一个递归方法printDigits,它将一个整数num作为参数,并以相反的顺序打印它的数字,每行一个数字。 这是我到目前为止所拥有的: 我觉得我只缺少一行代码,但不确定我需要做什么来修复它。
我试图使用递归打印链表中每个节点中的数据,但是我得到了越界错误,所以我认为递归函数有问题。 这是头文件: 基本上,我从公共函数调用私有助手函数。下面是两个函数的代码: 我认为问题出在if块中,因为如果没有下一个节点,我需要停止,但在返回之前还需要打印当前节点中的数据,但因为我已经调用了