利用递归函数调用方式,将所输入的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。


相关文章
|
4月前
|
存储 Java 数据处理
|
27天前
|
存储 算法 C语言
C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项
本文深入探讨了C语言中常见的字符串处理技巧,包括字符串的定义、初始化、输入输出、长度计算、比较、查找与替换、拼接、截取、转换、遍历及注意事项,并通过案例分析展示了实际应用,旨在帮助读者提高编程效率和代码质量。
80 4
|
4月前
|
Python
【Python】正则表达式判断是否存在连续相同的两个字符,连续两个字符一模一样
Python函数isContinuousChar,使用正则表达式来检测字符串中是否存在连续的相同字母或数字,并返回存在此类字符的列表长度,如果列表长度为0则表示不存在连续相同的字符。
174 2
|
运维 Shell Python
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)(一)
【运维知识高级篇】超详细的Shell编程讲解2(变量切片+统计变量长度+字串删除+字串替换+七种方法进行数值运算+整数比较+多整数比较+文件判断+字符串比对+正则比对+配合三剑客的高阶用法)
138 0
|
7月前
字符串,每个里面包含0-N个数字,如3,8,2,编写函数,将两个这样的字符串合并,并且输出的字符串里面没有重复的数字,并从大到小排列.
字符串,每个里面包含0-N个数字,如3,8,2,编写函数,将两个这样的字符串合并,并且输出的字符串里面没有重复的数字,并从大到小排列.
39 0
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
题目:下列给定程序中函数fun的功能是:从p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。
109 0
|
存储 Java 测试技术
打印不重复的字符串全排列(递归)
本文将详细解析在生成不重复的字符串全排列时使用的Java代码。首先,我们将展示一个常规的全排列生成方法,然后介绍如何通过使用HashSet来跳过已经尝试过的字符,从而避免生成重复的全排列。最后,我们提供了一道相关的编程题目以供练习。
127 0
打印不重复的字符串全排列(递归)
|
自然语言处理 C语言 C++
输入两个整数,求它们按由从大到小的顺序输出。要求使用变量的引用。
输入两个整数,求它们按由从大到小的顺序输出。要求使用变量的引用。
|
Shell
shell:脚本数组list定义、长度获取、循环打印、数组切片、字符串转换
shell:脚本数组list定义、长度获取、循环打印、数组切片、字符串转换
2301 0
求字符串的长度(4种写法)(普通写法,函数写法(两种:有无返回值),不允许创建临时变量法(递归))
求字符串的长度(4种写法)(普通写法,函数写法(两种:有无返回值),不允许创建临时变量法(递归))
166 0
求字符串的长度(4种写法)(普通写法,函数写法(两种:有无返回值),不允许创建临时变量法(递归))

热门文章

最新文章