'''任何一个正整数都可以用2的幂次方表示,例如137 =2^7 + 2^3 + 2^0,a^b表示为a(b),即:137 = 2(7) + 2(3) +2(0)。现输入正整数n < 20000,输出符合约定的n的0,2表示(在表示中不能有空格)'''
'''算法设计:
由于不知道数据的位数,加上对数据还是从低位到高位的操作比较简单,而输出显然是由高位发哦低位的,所以考虑用递归的方法来实现算法。
(1)、应该在递归之后进行输出操作
(2)、为了记录递归的深度,也就是2的指数,递归函数的参数应该有两个,一个是单签操作数n,另一个是用来记录递归的深度。
(3)、当n==0时,不做任何操作,但由于第一个输出项没有“+”号,其余输出项都有“+”号,所以将递归的条件定为1.
'''
#该方法解决了n用2次方幂表示,未解决2的指数也用2的次方幂表示
def try1(n,r):
if n == 1:
print("2(%d)" %r,end=" ")
else:
try1(n // 2,r+1)
if n % 2 == 1:
print("+ 2(%d)" %r,end=" ")
def main1():
n = int(input
用2的幂次方表示任何一个正整数(python)实现
最新推荐文章于 2023-02-20 12:06:32 发布
本文介绍如何使用Python编程,通过2的幂次方组合来表示任意正整数的方法,并展示了具体的运行结果。
摘要由CSDN通过智能技术生成