用非递归函数和递归函数实现回文数的判定方法py
时间: 2023-11-06 16:10:21 浏览: 30
使用非递归函数实现回文数的判定方法:
```python
def is_palindrome(num):
num_str = str(num)
n = len(num_str)
for i in range(n // 2):
if num_str[i] != num_str[n-i-1]:
return False
return True
```
使用递归函数实现回文数的判定方法:
```python
def is_palindrome(num):
num_str = str(num)
if len(num_str) <= 1:
return True
if num_str[0] != num_str[-1]:
return False
return is_palindrome(num_str[1:-1])
```
两种方法的原理都很简单,就是将数字转换为字符串后,使用双指针或者递归的方式判断字符串是否是回文。
相关问题
用非递归函数和递归函数实现回文数的判定方法
首先,回文数是指从左到右和从右到左读取都相同的数字。
实现回文数的判定方法,可以分别使用非递归函数和递归函数。
非递归函数实现:
```python
def is_palindrome_iter(num):
num_str = str(num)
left, right = 0, len(num_str)-1
while left < right:
if num_str[left] != num_str[right]:
return False
left += 1
right -= 1
return True
```
递归函数实现:
```python
def is_palindrome_recur(num):
num_str = str(num)
if len(num_str) <= 1:
return True
if num_str[0] != num_str[-1]:
return False
return is_palindrome_recur(num_str[1:-1])
```
这两个函数的实现方式略有不同,但基本思路都是将数字转换为字符串,然后从左右两端开始比较,判断是否相同。其中,非递归函数使用了while循环来实现,而递归函数则使用了函数的递归调用。
用python求多位数各位数之和,用非递归函数和递归函数实现
非递归函数实现:
```python
def sum_of_digits(num):
"""
计算多位数各位数之和,使用非递归函数实现
"""
sum = 0
while num > 0:
digit = num % 10
sum += digit
num //= 10
return sum
```
递归函数实现:
```python
def sum_of_digits(num):
"""
计算多位数各位数之和,使用递归函数实现
"""
if num == 0:
return 0
else:
return num % 10 + sum_of_digits(num // 10)
```
两个函数都可以实现多位数各位数之和的计算,非递归函数的实现方式是使用循环,递归函数的实现方式是将问题划分为更小的子问题,直到问题规模为1,然后将这些子问题的结果累加起来得到最终结果。