小编Sca*_*arl的帖子

头尾递归的区别

我试图找出这两种递归策略之间的区别.

我被告知的定义如下:

尾递归:如果在调用返回后没有必要进行调用,则调用是尾递归的,即当调用返回时,返回的值立即从调用函数返回

Head Recursion:当函数的第一个语句是递归调用时,调用是头递归的.

java recursion difference

26
推荐指数
1
解决办法
4万
查看次数

使用递归查找数组中的最大值

对于我被要求解决的其中一个问题,我发现使用for循环的数组的最大值,所以我试图使用递归找到它,这就是我想出的:

public static int findMax(int[] a, int head, int last) {

    int max = 0;
    if (head == last) {
        return a[head];
    } else if (a[head] < a[last]) {
        return findMax(a, head + 1, last);
    } else {
        return a[head];
    }
}
Run Code Online (Sandbox Code Playgroud)

所以它工作正常并获得最大值,但我的问题是:是否可以为基本情况返回[head]并且对于头部的值是>最后值的情况?

java recursion

8
推荐指数
2
解决办法
7万
查看次数

在单元格中以0开始的二进制输入

首先,我不确定这是否是问这个问题的正确地点,所以如果不是,请让我知道。

好的,我正在处理一个以二进制格式的数字作为输入的项目,但是,当输入以“ 00”或任何0开头时,它将在Excel中丢弃,因此我想知道如何强制excel在二进制输入的开头接受0

binary excel

1
推荐指数
1
解决办法
2万
查看次数

检查表达式是否在parantheses方面是平衡的

我正在尝试检查表达式是否在括号中是平衡的,我的程序应该输出相应的消息,如下所示:(我正在从文件中读取表达式)

如果对于每个")"有一个"("那么它是平衡的.如果有一个")"没有"("那么左括号丢失,依此类推.

我为"(A + B)"的情况制定了代码,它打印平衡,但对于"(A + B)"的情况,它打印平衡和左丢失,我似乎无法弄清楚是什么问题是

这里是代码:(编辑:我把它作为一种方法,当表达式平衡时,它工作正常,当右括号丢失时,如果左边的一个缺失它打印出"平衡")问题是当它左括号丢失,返回的堆栈为空,这就是它打印"平衡"的原因.我真的不知道如何解决这个问题!

 public static Stack isBalanced(String str) {

    Stack s = new Stack();
    char temp;

    for (int i = 0; i < str.length(); i++) {
        if (str.charAt(i) == '(') {
            s.push(str.charAt(i));
        } else if (str.charAt(i) == ')') {
                if (!s.isEmpty()) {
                temp = (char) s.pop();
            }
        }
    }
    return s;
}
Run Code Online (Sandbox Code Playgroud)

java stack nested

0
推荐指数
1
解决办法
936
查看次数

标签 统计

java ×3

recursion ×2

binary ×1

difference ×1

excel ×1

nested ×1

stack ×1