微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Horner 递归地将任何基数转换为十进制数

如何解决使用 Horner 递归地将任何基数转换为十进制数

我必须编写一个使用递归和霍纳方案从任何基数转换为十进制数的程序。我只能使用的是:

  1. 具有两个参数的 int 方法,例如 public static int horner (int[] digits,int base){}。我必须就地实现该方法,即除了作为参数给出的数组之外,我不能使用任何其他数组。
  2. 一个辅助方法

我该怎么做?我只有这个,但我知道这毫无意义。我不知道如何实现一个计数器,以便为递归创建一个终止基。

public static int horner (int[] digits,int base) {
    int n = digits.length;
    int a = 0;
    int decimal = digits[0];

    if (n == 0) {
        System.out.println(decimal+digits[a]);
        return digits[a];
    }

    decimal = decimal * base + horner(digits,base);

    return decimal;
}

解决方法

提示: 创建一个辅助方法,它接受一个额外的 index 参数,告诉它要查看的数组索引。帮助程序应递归调用自身,每次递增 index

public static int hornerHelper(int[] digits,int index,int base) {
    // majority of code here
    // recursively call hornerHelper(digits,index + 1,base) at some point
}

然后主函数只需要在第一个索引处启动进程。

public static int horner(int[] digits,int base) {
    return hornerHelper(digits,base);  // start at index 0
}

这不是一个完整的解决方案,但应该足以让您继续前进。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。