我正在尝试将数字减少到所需的值范围,比如x,直到它小于100.我正在做的是将数字除以10,直到它小于100.
什么是更好的方法,递归或迭代?
答案 0 :(得分:4)
迭代是你的朋友。
迭代:“重复一些事情直到完成。”
递归:“通过将其分解为较小的问题来解决大问题
和小块,直到你可以解决它;结合
结果。“
递归通常也要慢很多,并且当迭代适用时,它几乎总是偏好。
相关问题:Recursion vs Iteration。
答案 1 :(得分:0)
递归方法在执行时间方面通常更昂贵(因为方法调用会带来额外的开销)。此外,如果递归太深,它可能会导致StackOverflow异常(可能不适用于您的情况,但是,如果您的初始数量足够小以保持递归调用的数量较低)
因此,首选迭代。
答案 2 :(得分:0)
我更喜欢迭代方法而不是递归方法。你可以做的很酷的事情是。
for (;num > 100; num /=10) {}
num
是您要划分的数字。
在一天结束时,编译器会找到最常用的事情,因此以您认为最符合逻辑的方式设计程序。
答案 3 :(得分:0)
递归效率低于迭代,因为在递归期间由于调用堆栈的使用频繁而导致递归调用通常会产生更多的开销。
迭代也比递归调用易于理解和维护。在某些情况下,基于您编写算法的方式,递归算法的代码复杂度可能更高。见Iterative and recursive version has same complexity?