编写一个函数,求一个正整数n的各位数字之和
时间: 2023-05-31 11:18:17 浏览: 408
### 回答1:
可以使用循环和取余运算来实现:
def digit_sum(n):
sum =
while n > :
sum += n % 10
n //= 10
return sum
其中,n % 10 可以取出 n 的个位数,n //= 10 可以将 n 的个位数去掉,直到 n 变为 。每次取出的个位数累加到 sum 中,最后返回 sum 即可。
### 回答2:
要求编写一个函数,求一个正整数n的各位数字之和。这个问题可以用循环或递归两种方式来解决。
循环方式:
首先,我们可以使用while循环,每次除以10并将结果与10取模,这样就可以得到每一位的数字,然后把这个数字加到一个累加器里去,直到除以10的结果等于0为止。最后返回这个累加器的值即可。以下是相应的代码:
```python
def sum_digits(n):
s = 0
while n != 0:
s += n % 10
n //= 10
return s
```
递归方式:
使用递归进行求和也是非常合适的。可以使用数学上的方法,将一个数字拆分成个位数和剩余数字,然后将个位数加到总和中,然后递归调用该函数以计算剩余数字的和。以下是相应的代码:
```python
def sum_digits(n):
if n < 10:
return n
else:
return n % 10 + sum_digits(n // 10)
```
这两种方法都可以求出一个正整数n的各位数字之和。但是递归方法可能会更加易读,特别是在处理非常大的数字时。
总结:
无论哪种方法,这个问题的答案都是将n的每一位数字相加起来。循环和递归两种方法各有优缺点,选择哪种方法主要取决于程序员的个人喜好。无论哪种方法,求和的复杂度都是O(log n),因为算法是线性的。
### 回答3:
对于这个问题,我们可以利用循环和取余的方法来实现。
首先,我们可以先把n转化为字符串类型,这样可以方便地对每一位数字进行操作。然后,我们可以设置一个变量sum,用于累加各位数字的和。
接着,我们利用一个for循环来遍历字符串中的每一位数字,通过取余和整除操作,依次获得每个数位上的数字。然后将这些数字累加到sum中。
最后,函数返回sum即可。
下面是示例代码:
def digit_sum(n):
s = str(n)
sum = 0
for i in range(len(s)):
sum += int(s[i])
return sum
我们可以对这个函数进行测试,例如:
print(digit_sum(12345))
输出结果为:
15
这正是12345这个数字的各位数字之和。
阅读全文