C++程序,使用递归将二进制数转换为格雷码
格雷码或反射二进制码是一种特殊类型的数字二进制表示形式,其中两个连续值仅在一位上不同。例如,1和2的二进制等价物是01和10,这里有两个位正在改变。但在格雷码中,1是01,2是11,只有一位在变化。在本文中,我们将了解如何使用 C++ 中的递归将给定的二进制数转换为其等效的格雷码。
将数字作为十进制整数传递
在第一个示例中,我们提供十进制数字。数字只有 0 和 1,但数字是十进制的。例如,如果我们想传递 6 作为输入,我们传递 110(十进制的一百零 10),这相当于二进制表示的 6。该程序也类似地返回输出。
算法
- 定义一个函数solve(),这将采用二进制数
- 如果 n 为 0,则
- 返回0
- 如果结束
- 最后 := n 的最后一位
- second_last = n 的倒数第二位
- 如果最后一位和倒数第二位不同,则
- 输入1并调用solve(n切割最后一位)
- 否则
- 输入0并调用solve(n切割最后一位)
- 如果结束
- solve() 函数结束