作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是一名 CS 学生,大约一周前我买了破解编码面试。我只是在 Big O 章节,我发现了一种算法,据说可以对数字中的数字求和;乍一看,它看起来很困惑,所以我用 Python 运行了它,但它没有按预期运行。看看:
int sumDigits(int n) {
int sum= 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
据我了解,这段代码实际上并没有返回给定数字的数字总和,是吗?我真的很想看看它是如何做到这一点的,但由于我在 Python 中尝试的示例不起作用,我真的看不出它是如何工作的。
最佳答案
此算法取决于 n/= 10
为 integer division (即 5/2 === 2
)。如果你使用的是 Python 3,你需要使用 //
所以它应该看起来像这样:
def sumDigits(n):
sum = 0
while n > 0:
sum += n % 10
n //= 10 # integer division
return sum
sumDigits(123) # 6
关于来自 Cracking the Coding Interview 的算法似乎做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51507881/
我是一名优秀的程序员,十分优秀!