一名男子开始开车去拜访他的姻亲。总距离为60英里,他以每小时60英里的速度开始。在行驶了1英里之后,他失去了对旅程的一些热情,并且(瞬间)减速到每小时59英里。再行驶一英里后,他再次减速到每小时58英里。这种情况继续下去,每行驶一英里,每小时逐步减慢1英里,直至行程结束。
现在我确实知道该怎么做,我相信,
我要找到他每英里行驶的速度并计算他行驶1英里需要多长时间,然后我要添加所有值以达到答案。
我试图写一个等式来做这个,但我认为循环或递归会更简单。
有人可以指出我正确的方向,让这个程序给我正确的答案。在纸面上,我可以轻松地添加并获得4.6小时(正确的答案),但是编写递归程序有点困难(或者我应该使用循环?)
答案 0 :(得分:0)
对于这个确切的问题,没有太多的复杂性和资源问题。您可以使用任一解决方案。我想在这种情况下循环会更简单。那说递归也不复杂。
答案 1 :(得分:0)
递归地是:
public static double run(double miles, double speed){
if(miles <= 1){
return 1/speed;
}
return 1/speed + run(miles-1, speed-1);
}
这将为您提供所需的小时数(作为双倍)(假设里程以英里为单位,速度以英里/小时为单位)
相应地修改您想要的数据类型
如果您希望使用三元运算符的代码块更小:
public static double run(double miles, double speed){
return 1/speed + (miles <= 1 ? 0 : run(miles-1, speed-1));
}