使用递归求反序数
时间: 2023-06-28 19:08:43 浏览: 137
反序数是指一个数的各位数字排列顺序完全颠倒所得到的新数。例如,123的反序数是321。使用递归求反序数可以按照以下步骤进行:
1. 将整数转换成字符串类型,方便对每一位数字进行处理。
2. 对于一个n位数,将其反序数看作是最后一位数字加上前n-1位数字的反序数再乘以10得到的结果。
3. 递归求解前n-1位数字的反序数。
以下是使用Python语言实现的递归求反序数的代码示例:
```python
def reverse_num(n):
# 将整数转换成字符串类型
str_n = str(n)
# 如果只有一位数字,则直接返回该数字
if len(str_n) == 1:
return n
# 否则,求前n-1位数字的反序数
reverse = reverse_num(int(str_n[:-1]))
# 将最后一位数字加到前面的反序数后面,并乘以10
return int(str_n[-1] + str(reverse)) * 10
# 测试
print(reverse_num(123)) # 输出:321
print(reverse_num(456789)) # 输出:987654
```
可以看到,递归求反序数的思路比较简单,但需要注意边界条件和递归的退出条件。
相关问题
用c语言实现输入一个整数n用递归算法处理,返回其反序数
好的,这是一个计算问题,我可以为您提供解答。
以下是C语言递归计算反序数的代码:
```c
#include <stdio.h>
int reverse(int num);
int main()
{
int num, reversed;
printf("Enter an integer: ");
scanf("%d", &num);
reversed = reverse(num);
printf("The reverse of %d is %d.\n", num, reversed);
return 0;
}
int reverse(int num)
{
static int reversed = 0;
if (num == 0)
{
return reversed;
}
else
{
reversed = reversed * 10 + num % 10;
reverse(num / 10);
}
}
```
您可以通过输入一个整数,该程序将返回其反序数。 例如,如果您输入“1234”,该程序将返回“4321”。希望这可以帮助您解决您的问题。
用c++创建链表,并用递归函数实现链表反序
在C++中创建链表可以通过定义一个节点结构体来实现。每个节点包含一个数据成员和一个指向下一个节点的指针。
下面是一个示例代码,展示了如何创建链表并使用递归函数实现链表反序:
```cpp
#include <iostream>
// 定义链表节点结构体
struct Node {
int data;
Node* next;
};
// 在链表末尾插入节点
void insertNode(Node*& head, int data) {
Node* newNode = new Node;
newNode->data = data;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 递归函数实现链表反序
Node* reverseList(Node* curr, Node* prev = nullptr) {
if (curr == nullptr) {
return prev;
}
Node* nextNode = curr->next;
curr->next = prev;
return reverseList(nextNode, curr);
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << std::endl;
}
int main() {
Node* head = nullptr;
// 插入节点
insertNode(head, 1);
insertNode(head, 2);
insertNode(head, 3);
insertNode(head, 4);
insertNode(head, 5);
std::cout << "原始链表:";
printList(head);
// 反序链表
head = reverseList(head);
std::cout << "反序链表:";
printList(head);
return 0;
}
```
运行以上代码,输出结果为:
```
原始链表:1 2 3 4 5
反序链表:5 4 3 2 1
```
阅读全文