gpt4 book ai didi

java - 使用递归将某个基数中的数字转换为十进制数

转载 作者:搜寻专家 更新时间:2023-11-01 01:16:06 24 4
gpt4 key购买 nike

我的任务是创建一个递归方法 makeDecimal,当传递一个数字(由字符串表示)及其基数时,将数字转换为基数 10。您将需要使用方法 Integer.parseInt(海峡)。 (提示:使用子字符串。)此方法接受一个 String 并返回它的整数形式。

例如,Integer.parseInt("21"); 将返回 int 21。

以下是 makeDecimal 工作原理的一些示例:

makeDecimal("11", 2) 将返回 3。

makeDecimal("100", 4) 将返回 16。

这是我的尝试:

public static double makeDecimal(String number, int base){
int len = number.length();
double f = 0;

if(len <= 0)
return 0;
else{
makeDecimal(number,base);

double temp = Integer.parseInt(number.substring(len - 1, len + 1));
f = f + temp * Math.pow(3, len-1);
}

len--;
return f;
}

但是,我得到一个“溢出错误”,我什至不知道它是否写对了。

最佳答案

您正在使用与传入的参数完全相同的参数进行递归。因此,调用本身将以相同的方式递归,直到堆栈溢出。这不是递归应该如何工作的。相反,您需要弄清楚如何解决当前调用中的一个问题,然后递归解决一个较小的问题。

在您的代码中,甚至不清楚您使用的是什么逻辑。 (计算 3len-1 有什么意义?)试试这个:

  • 如果输入字符串的长度为 0,则答案为 0(您答对的部分)
  • 否则,取最后一位并在当前基数中解析它。那么答案就是 value 加上 base 乘以所有值,但不包括输入的最后一位。 (提示:这是使用递归的好地方。)

您应该能够将该描述转化为适当的方法调用和 substring() 的使用。

哦,还有一件事:没有理由在这里使用 double 值。始终坚持使用 int 变量。您将不需要 Math.pow()

关于java - 使用递归将某个基数中的数字转换为十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34645368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com