如何使用Python编写一个程序,计算并打印出100-999范围内所有的水仙花数,并用for循环和递归两种方法分别实现?
时间: 2024-11-05 15:21:46 浏览: 32
水仙花数是一个经典的编程问题,它不仅考验编程者对循环和递归的理解,还涉及基础的数学概念。《Python编程题集:落下、水仙花数与数字组合计算》这本书提供了对类似问题的解析和解答,非常适合你这个问题的学习和参考。
参考资源链接:[Python编程题集:落下、水仙花数与数字组合计算](https://wenku.csdn.net/doc/1me1jt9p2s?spm=1055.2569.3001.10343)
首先,我们来看如何使用for循环来解决这个问题。你需要遍历100到999之间的所有数,对于每个数,分别计算其百位、十位和个位上的数字,然后求这些数字的立方和,判断立方和是否等于原数。如果等于,那么就打印出这个数。具体的代码实现如下:
```python
for num in range(100, 1000):
sum_of_cubes = sum(int(digit) ** 3 for digit in str(num))
if num == sum_of_cubes:
print(num)
```
接下来,我们用递归方法来解决同一个问题。递归方法需要定义一个函数,该函数接收当前处理的数字,然后将其分解为个位、十位和百位数字,并计算立方和。如果立方和等于原始数字,则输出该数字。如果当前数字不是三位数,那么递归结束。具体的递归代码实现如下:
```python
def is_narcissistic(num):
if num < 100 or num > 999:
return False
sum_of_cubes = sum(int(digit) ** 3 for digit in str(num))
if sum_of_cubes == num:
print(num)
return True
return False
for num in range(100, 1000):
is_narcissistic(num)
```
通过上述两种方法的比较,你可以更深入地理解循环和递归在解决问题时的不同思路和应用。如果你希望进一步提升编程能力,特别是对基础数学概念在编程中的应用,我强烈建议你查阅《Python编程题集:落下、水仙花数与数字组合计算》。这本书详细解析了多种数学相关编程题目,能够帮助你更全面地掌握编程技巧和数学应用。
参考资源链接:[Python编程题集:落下、水仙花数与数字组合计算](https://wenku.csdn.net/doc/1me1jt9p2s?spm=1055.2569.3001.10343)
阅读全文