【中等】HJ107 求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId=37&tqId=21330&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D3%26tpId%3D37%26type%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=
逼近试错法,没有灵魂的思路:

import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Double dbData = scanner.nextDouble(); boolean bflag = false; if (dbData < 0) { dbData = 0.0 - dbData; bflag = true; } Integer intData = dbData.intValue(); int COUNT_MAX = 20; int start = 0; for(int i = 1; i <= COUNT_MAX;i++) { int p = i * i * i; int n = (i + 1) * (i + 1) * (i + 1); if(intData >= p && intData < n) { start = i; break; } } double ret = 10000000; double minGap = 10000000; // 逐步逼近. double step = 0.1; for (double m = start + 0.0; m < (start + 1.0); m += step) { double temp = m * m * m; double gap = ((temp - dbData) >= 0) ? (temp - dbData) : (dbData - temp); if(minGap > gap) { minGap = gap; ret = m; } } DecimalFormat df = new DecimalFormat("0.0"); if(bflag) { ret = 0.0 - ret; } System.out.println(df.format(ret)); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix