不主动 发表于 2018-5-26 16:08:36

函数模块化设计

任何一个整数n的立方都可以表示成n个相邻的奇数之和,其中最大的奇数为d=2m-1,而m=1+2+3+4......+n,怎样编写一个程序,有键盘输入一个整数n,求n的立方是哪些奇数之和,用子函数编写。。。。。。。。。各路大神快来救救我啊,想了好久了 ,没有头绪,唉唉唉!!!!!!

simplerjiang 发表于 2018-5-26 22:50:02

本帖最后由 simplerjiang 于 2018-5-26 22:51 编辑

代码是由python写的。如果需要C的版本也可以提供。
编程最好的就是,你几乎不需要理解它怎么做的,只需要知道它步骤有哪些,
交给计算机去做就好了

def count(n):
    m = 0
    for i in range(n):
      m += i+1

    d = 2 * m - 1 #获得最大的奇数
    n3 = n * n * n #获得n的立方
    result = []
    while 1:
      if n3 - d < 0: #如果小于0了就错了,但其实不会错
            return False
      elif n3 - d == 0:   #如果等于0,说明d是最后一个奇数
            result.append(d)
            return result #返回列表
      else:
            n3 = n3 - d#用奇数减去n的立方,并赋值给n3这个变量,以供下一个循环
            result.append(d)
            d = d -2 #奇数-2,赋值给d变量,作为下一个奇数,以供下一个循环

if __name__ == "__main__":
    n = int(input("请输入一个整数"))
    result = count(n)
    n3 = n * n * n
    print("%d == %d * %d * %d" % (n3,n,n,n))
    n3_test = 0
    for i in result:
      if i == result[-1]:
            print(i)
            n3_test += i
            break
      print(i)
      print("+")
      n3_test += i
    print('==')
    print(n3_test) #这里我做了一个测试,计算这些奇数加起来是不是等于n的立方,其实是没必要的


不主动 发表于 2018-5-27 10:17:46

还在学c,python还没接触,看不懂{:5_97:}
页: [1]
查看完整版本: 函数模块化设计