最近在看数据结构,遇到这个练习题,一开始觉得很简单,后来一想正整数不确定,位数多了用常规做法有点复杂。看了看网上的做法,用了递归的算法,上代码:

#coding:utf-8

import math

#首先判断几位数

def diGit(n):

a = n

c = 0

while a != 0:

a = a / 10

c += 1

return c

def sumDigits(n):

c = diGit(n) #判断几位数

if n < 10:

return n

else:

l = int(n / math.pow(10, c -1)) #取最高位

#print l

y = int(n - l * math.pow(10, c-1)) #取最高位后剩余

#print j

n = l + sumDigits(y)

return n

def main():

i = int(raw_input(unicode('请输入任意整数','utf-8').encode('gbk')))

sum = sumDigits(i)

print sum

main()

————————————————

版权声明:本文为CSDN博主「gungun_changjiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/gungun_changjiang/article/details/80705742

还是觉得有点复杂。。。。。。

翻了翻前面的知识点,看到这么一句话:数据结构的存储结构会影响算法的好坏。于是就换了一个思路:把这个正整数当成一个字符串来处理。具体代码如下:

#计算任一输入的正整数的各位数字之和

n = input("请输入一个正整数:") #将数字作为字符串输入

list = list(n) #将字符串转换为列表

sum = 0

for i in range(len(list)):

sum += int(list[i]) #将字符转换为整数型,并累加列表中的每个数字

print(sum)

运行结果:

请输入一个正整数:7453423432

37

Process finished with exit code 0

是不是看起来简单多了,看来有时候要换个思路解决问题。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐