【问题标题】:Java recursion multipleJava递归多重
【发布时间】:2015-10-24 14:23:19
【问题描述】:

我试图了解如何在 BST 中计算高度。所以我写了一个程序来查看步骤,但我得到了这个错误。请帮助更正代码。

import java.io.*;
import java.util.*;
import java.lang.Math;

class recurme {

    public void rec(int k) {
        int i = 0;
        int count = 0;
        count++;
        System.out.println(count + "  ..." + k);
        i = Math.max(rec(k - 1), rec(k - 1));
        System.out.println(i);
    }

    public static void main(String args[]) {
        int n = 10;
        recurme obj = new recurme();
        obj.rec(10);

    }
}

错误:

此处不允许使用空类型。

【问题讨论】:

  • rec 返回 void:你不能在 void 上调用 Math.max
  • 提示:你传递给Math.max的表达式是什么类型的?
  • 即使你的rec 方法确实返回了一个值,它仍然没有意义:你为什么要用same 参数调用Math.max 两次?您了解您要编程的内容吗?

标签: java recursion void


【解决方案1】:
i = Math.max(rec(k - 1), rec(k - 1));

罪魁祸首就是上面的说法。

查看文档以了解 Math.max 期望的输入:http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#max(int,%20int)

看看你的 rec 方法输出了什么。

public void rec(int k)

这应该可以帮助您了解缺少的内容。

【讨论】:

  • 对不起!不明白。请说出答案。谢谢你
  • public int height(BSTNode node) { if (node == null) { return -1; } else { return 1 +Math.max(height(node.left),height(node.right));
  • 您的代码使用 void 调用 Math.max。像这样的东西: Math.max(void, void);
猜你喜欢
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
相关资源
最近更新 更多