利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

简介: 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

在C语言和Python中,递归函数是一种调用自身的函数,直到满足某个终止条件为止。对于你的问题,我们需要编写一个递归函数,该函数接收一个字符串(或字符数组)的当前位置,并打印从该位置到字符串末尾的字符,然后递归地调用自身以打印之前的字符,直到打印完所有字符并以相反的顺序呈现。


C语言版本

在C语言中,你可以通过传递字符串和当前要处理的字符的索引来实现。注意,C语言中的字符串是以空字符(\0)结尾的字符数组。


c复制代码
 #include <stdio.h>  
 
   
 
 void reversePrint(char *str, int index) {  
 
     // 终止条件:如果到达字符串的末尾  
 
     if (str[index] == '\0') {  
 
         return;  
 
     }  
 
       
 
     // 先打印下一个字符,然后递归调用打印当前字符  
 
     reversePrint(str, index + 1);  
 
     printf("%c", str[index]);  
 
 }  
 
   
 
 int main() {  
 
     char str[6]; // 假设最多输入5个字符加上一个'\0'  
 
     printf("请输入5个字符: ");  
 
     scanf("%5s", str); // 注意使用%5s限制输入长度  
 
     reversePrint(str, 0);  
 
     printf("\n");  
 
     return 0;  
 
 }


Python版本


在Python中,你可以更简洁地实现这一功能,因为Python的字符串是不可变的,但我们可以传递一个字符串和一个索引,就像C语言那样。


python复制代码
 def reverse_print(s, index=None):  
 
     # 如果index是None,则从字符串末尾开始  
 
     if index is None:  
 
         index = len(s) - 1  
 
       
 
     # 终止条件:如果index小于0  
 
     if index < 0:  
 
         return  
 
       
 
     # 先打印下一个字符,然后递归调用打印当前字符  
 
     reverse_print(s, index - 1)  
 
     print(s[index], end='')  # 使用end=''来避免换行  
 
   
 
 # 示例使用  
 
 input_str = input("请输入5个字符: ")  
 
 reverse_print(input_str)  
 
 print()  # 在递归完成后打印一个新行



注意:在Python示例中,我使用了end=''参数来确保print函数不会在每次调用时都换行,而是在整个字符串被逆序打印完毕后才换行。在C语言示例中,printf函数自然地在每次调用后不会添加新行,因为我们没有使用\n。


相关文章
|
3月前
|
存储 Java 数据处理
|
6月前
字符串,每个里面包含0-N个数字,如3,8,2,编写函数,将两个这样的字符串合并,并且输出的字符串里面没有重复的数字,并从大到小排列.
字符串,每个里面包含0-N个数字,如3,8,2,编写函数,将两个这样的字符串合并,并且输出的字符串里面没有重复的数字,并从大到小排列.
35 0
|
6月前
|
存储 搜索推荐 Serverless
用指针和动态内存分配的方法输入10,2,30, 4,5,按输入顺序逆置排序,输出排序后的元素,即输出5,4,30,2,10
用指针和动态内存分配的方法输入10,2,30, 4,5,按输入顺序逆置排序,输出排序后的元素,即输出5,4,30,2,10
45 0
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
|
存储 Java 测试技术
打印不重复的字符串全排列(递归)
本文将详细解析在生成不重复的字符串全排列时使用的Java代码。首先,我们将展示一个常规的全排列生成方法,然后介绍如何通过使用HashSet来跳过已经尝试过的字符,从而避免生成重复的全排列。最后,我们提供了一道相关的编程题目以供练习。
119 0
打印不重复的字符串全排列(递归)
定义一个长度为10的整型数组,循环输入10个整数。 然后将输入一个整数,查找此整数,找到后输出下标,没找到给出提示。
定义一个长度为10的整型数组,循环输入10个整数。 然后将输入一个整数,查找此整数,找到后输出下标,没找到给出提示。
216 0
|
机器学习/深度学习 Cloud Native 安全
1790. 仅执行一次字符串交换能否使两个字符串相等:简单模拟
这是 力扣上的 1790. 仅执行一次字符串交换能否使两个字符串相等 ,难度为 简单。
|
自然语言处理 C语言 C++
输入两个整数,求它们按由从大到小的顺序输出。要求使用变量的引用。
输入两个整数,求它们按由从大到小的顺序输出。要求使用变量的引用。