![Python算法指南:程序员经典算法分析与实现](https://wfqqreader-1252317822.image.myqcloud.com/cover/208/31476208/b_31476208.jpg)
上QQ阅读APP看书,第一时间看更新
例12 整数替换
1. 问题描述
给定一个正整数n,如果n为偶数,将n替换为n/2;如果n为奇数,将n替换为n+1或n-1,那么将n转换为1,最少的替换次数为多少?
2. 问题示例
输入8,输出3,即8→4→2→1;输入7,输出4,即7→8→4→2→1,或者7→6→3→2→1。
3. 代码实现
![](https://epubservercos.yuewen.com/2ECEAD/17035792804285206/epubprivate/OEBPS/Images/Figure-P39_3455.jpg?sign=1738903174-L0Z3lGAo4glNQnqQO5WuuQSOYiM5fr6e-0-c1bf3f6b0eb1bd0eaad7e627b5758fc3)
4. 运行结果
输入:8
[8,4,2,1]
输出:3
输入:18
[18,9,8,4,2,1]
输出:5
给定一个正整数n,如果n为偶数,将n替换为n/2;如果n为奇数,将n替换为n+1或n-1,那么将n转换为1,最少的替换次数为多少?
输入8,输出3,即8→4→2→1;输入7,输出4,即7→8→4→2→1,或者7→6→3→2→1。
输入:8
[8,4,2,1]
输出:3
输入:18
[18,9,8,4,2,1]
输出:5