我有两个简单的函数:
a)
drawRight(x){ // where x is integer
if(x == 0 )
draw();
else{
drawRight(x-1);
doSomething();
drawLeft(x-1);
}
}
b) (非常类似于a) )
drawLeft(x){ // where x is integer
if(x == 0 )
draw();
else{
drawRight(x-
在下面的代码中,我完全理解它是如何工作的,直到终止和返回1为止。我假设,一旦函数结束,它应该输出1,但它执行的是指数程序应该做的事情,它输出正确的答案,在本例中是9。
我的问题是为什么会这样?
我假设我可视化递归的方式是不正确的(可能是我对堆栈如何处理递归的想法?) ,但是它无助于我的理解的这一点。
function power(base,exponent){
if(exponent === 0){
return 1 // Terminates with return 1 but output is correct
}
return base
我在python中找到了一个基本的代码,它可以找到当你只能向下或向右走时,在(m,n)网格中可以采用的路径数。 def gridtraveller(m,n):
if m == 0 or n == 0:
return 0
elif m == 1 or n == 1:
return 1
return gridtraveller(m-1,n) + gridtraveller(m,n-1) 但我不明白为什么这样做有两件事: def某物(m,n)有什么作用?为什么我们在这里返回定义?(我确实理解为什么我们返回m-1和n-1,但我不理解def返回
在理解这个片段的核心方面,我遇到了一些实际的困难,尽管它看起来非常简单和简单。给定一个简单的二叉树,这个著名的函数会产生同一棵树的镜像结果。
void mirror(struct node* node) {
if (node==NULL) {
return;
}
else {
struct node* temp;
// do the subtrees
mirror(node->left); //this part confuses me
mirror(node->right); //so does this
// s
我很难理解二叉树遍历的堆栈帧图。
我有一个函数来计算从根节点开始的二叉树的高度。
public static int height(TreeNode<String> t){
if(t == null)
return -1;
int left = height(t.left);
System.out.println("left " +left);
int right = height(t.right);
System.out.println("right &
我已经试着让它尽可能简单,我仍然在试图理解为什么在下面的例子中递归失败。
#!/bin/sh
foo()
{
echo "Enter a number"
read num
if [ $num -eq 1 ]; then
foo $num
fi
echo "Hi"
sleep 1
}
while true
do
foo
done
只需点击'1‘(你将输入if语句和递归),你将结束执行"hi“两次,或者直到你输入’1‘的次数。我如何应对这样的问题?
示例执行
Enter a number
1
Enter a number
1
Enter a nu
我在试着理解递归是如何工作的。由于递归调用的位置,我有两个具有不同输出的代码。我知道它应该有不同的输出,但我不明白为什么输出是这样的。
代码1(打印后的递归调用):
public class Test {
public static void main(String[] args) {
xMethod(5);
}
public static void xMethod(int n) {
if (n > 0) {
System.out.print(n + " ");
xM
代码:
public static void main(String[] args) {
System.out.println(test(13549));
}
public static int test(int a){
if(a<10)
return a;
int b = (a%10);
int c = test(a/10);
int d = Math.max(b,c);
return d;
}
我理解该方法的作用(在使用调试器之后),并且我理解该方法调用自身直到它小于10,并且它运行并检查更大的b或c。现在我不
这是我的代码:
def gcd(a,b):
if a%b == 0:
return b
print b
elif b%a == 0:
return a
print a
else:
if a > b:
gcd(a%b,b)
elif b > a:
gcd(b%a,a)
else:
return a
print a
def lcm(a,b):
if
我试图理解当我们在递归期间调用一个函数时,return值的不同之处。Return的概念对我来说是有意义的,因此我只在调用函数和输出时显示我的代码。
d={2:'ab'}
def print_str(digit,curr_idx,output):
if curr_idx==len(d[digit]):
#print(output)
return
for j in range(curr_idx,len(d[digit])):
output.append(d[digit][j])
print_str(digit,curr_idx+1,outp
我并不经常编写递归函数/方法。我成功地理解了“基本案例”中的一些更简单的功能,例如:
def countdown(num):
if num == 0: # Base case
return
print(num) # Action
countdown(num-1) # Reduction and recurse
def factorial(num):
if num == 0 or num == 1: # Base cases
return 1
return factorial(num-1) * num # reductio