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


相关文章
|
移动开发 vr&ar
数据库系统概论——关系代数详解
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是利用对关系的运算来表达查询的。任何运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。关系代数的运算对象是关系,运算结果亦为关系。集合运算符将关系看成元组的集合从关系的“水平”方向即行的角度来进行运算专门的关系运算符不仅涉及行而且涉及列算术比较符辅助专门的关系运算符进行操作逻辑运算符辅助专门的关系运算符进行操作。
2555 1
数据库系统概论——关系代数详解
|
11月前
|
机器学习/深度学习 存储 算法
SMOTE-XGBoost实战:金融风控中欺诈检测的样本不平衡解决方案
本文深入探讨金融支付风控领域中的欺诈检测问题,针对样本不平衡的核心痛点,提出一种基于动态密度SMOTE算法的改进方案,并结合优化后的XGBoost模型实现高性能检测。相比传统方法,本文方案在IEEE-CIS数据集上显著提升Recall(达0.85)和AUC-PR(达0.72),同时控制推理时延在合理范围。文章还详细解析特征工程体系、在线推理优化及动态阈值调整机制,并展望联邦学习与图神经网络等未来方向,为实际业务应用提供全面指导。
738 1
|
12月前
|
数据可视化 开发者 智能硬件
鸿蒙5开发宝藏案例分享---一多断点开发实践
本文深入解析鸿蒙开发中的六大核心案例,涵盖动态网格布局、自适应导航栏、阅读器分栏模式、视频播放器多形态适配、数据看板动态布局及表单自动优化。通过具体应用场景与代码实现,解决多端适配痛点,如手机单列到平板多列的智能计算、折叠屏半开状态特殊布局等。同时提供开发者避坑指南与终极适配方案架构,帮助开发者灵活应对复杂需求,提升开发效率。
|
安全 测试技术 量子技术
量子计算硬件:超导量子比特的最新进展
量子计算作为信息技术的前沿领域,超导量子比特作为其核心组件,近年来取得了显著进展。本文介绍了超导量子比特的基本原理、制造与性能提升、最新技术成果及未来展望,展示了其在密码学、化学和材料科学等领域的潜在应用,预示着量子计算时代的到来。
|
API 内存技术
鸿蒙next版开发:相机开发-拍照(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机功能,特别是拍照功能。本文详细介绍如何在ArkTS中实现拍照功能,包括导入接口、创建会话、配置会话、触发拍照及监听拍照输出流状态,并提供代码示例进行详细解读。通过本文,你将掌握如何在HarmonyOS 5.0中使用ArkTS实现高效的拍照功能。
844 7
|
监控 安全 网络安全
远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制
远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制
6168 0
|
存储 算法
算法的时间复杂度和空间复杂度
本文详细讨论了算法的时间复杂度和空间复杂度,包括它们的概念、计算方法和常见复杂度的对比,并通过多个实例解释了如何计算算法的时间和空间复杂度。
1738 0
算法的时间复杂度和空间复杂度
Anaconda在开始菜单找不到Anaconda command prompt入口
这篇文章提供了解决Anaconda安装后在开始菜单找不到Anaconda command prompt入口问题的步骤,通过运行命令`python .\\Lib\_nsis.py mkmenus`重新创建Anaconda的开始菜单快捷方式。
Anaconda在开始菜单找不到Anaconda command prompt入口
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
639 2