本总结是是个人为防止遗忘而作,不得转载和商用。
题目
给定某正整数N,若为偶数,则N被更新为N/2;否则,N被更新为3*N+1;问:
经过多少步N变成1?
分析
对于这个问题我们需要思考:如果已经计算得到1~N-1的变换次数,如何计算N的变换次数?
于是:
如果N是偶数,那下一次就是N/2,而N/2需要的变换次数已经知道了,所以:
f(N) = f(N/2) + 1
如果N是奇数,那下一次是3N+1,这个会变大,就先不管它,多算几步,如果又一次落在了1~(N-1) 之间(它总能在某一次运算中变成偶数,然后偶数的下一次会除以2),那就求出来了。