非递归和递归实现逆序字符数组(C语言实现)

非递归和递归实现逆序字符数组(C语言实现),第1张

题目:
用递归实现逆序字符数组,而不是逆序打印,并且不能使用C函数库中的字符串 *** 作函数
比如字符数组 arr : abcdef,
逆序后,字符数组 arr : ffedcba

非递归实现逆序

相信非递归的不用多说,这里就简单的画下图

代码实现
// 字符数组逆序(非递归)
#include 

int My_strlen(char* string)
{
	int count = 0;
	while (*string != ')'++
	{
		count;++
		string;}
	return
	; count}
void


reverse_string (char*) strint
{
	= left 0 ;int
	= right My_strlen ()str- 1 ;while

	( <left ) rightchar
	{
		= tmp * (+str ) left;*
		(+str ) left= * (+str ) right;*
		(+str ) right= ; tmp++
		left;--
		right;}
	}
int

main ()// 初始化字符数组
{
	char
	[ arr10]= "abcdef" ;// 函数调用
	reverse_string
	()arr;printf
	("%s\n",) arr;return
	0 ;}

include
递归实现逆序

递归的总思想就是把大事化小

多个参数的递归 题目思路

跟非递归的思想差不多,相信不需要多解释

代码实现
#include 
#void 

reverse_string (char*, arrint , leftint ) rightchar
{
	= tmp * (+arr ) left;*
	(+arr ) left= * (+arr ) right;*
	(+arr ) right= ; tmpif
	( <left ) rightreverse_string
	{
		(,arr+ left 1 ,- right 1 );}
	}
int

main ()// 初始化字符数组,变量
{	char
	[ arr10]= "abcdef" ;int
	= left 0 ;int
	= right strlen ()arr- 1 ;// 函数调用
	reverse_string
	(,arr, left) right;printf
	("%s\n",) arr;return
	0 ;}

  • 先把a存放到tmp里面,再把f放到a处
  • 只有一个参数的递归 题目思路

    如图所示,递归实现可以想象为
    a和f交换,再加上"bcde"
    b和e交换,再加上"cd"
    最后c和d交换

    题目思路的实现

    如图所示,

    1. 将’
    2. 逆序数组bcde
    3. ’放到f处(因为字符串是以’
    4. 逆序完bcde再把a放到f处
    5. ’为结束标志)includeinclude// 函数的实现
    代码实现
    #int 
    #My_strlen 
    
    (
    
    char *)int= string0
    {
    	; count while (*
    	!= ')'++string ; ++;
    	{
    		count}return
    		string;}
    	void
    	reverse_string count(
    char
    
    * )char=* string;
    {
    	int tmp = My_strlenstring(
    	) len - 1;string* = *(
    	+string ) ;*string ( len+)
    	=';'string if len( My_strlen (+
    	1 )1)string reverse_string (+ > 1)
    	{
    		;}string * (+)
    	=
    	;}string int lenmain ( tmp)
    // 初始化字符数组
    
    char [10]
    {
    	=
    	"abcdef" arr;// 函数调用reverse_string ( );
    	printf
    	("%s\n"arr,)
    	;return0; arr}
    	 
    
    

    欢迎分享,转载请注明来源:内存溢出

    原文地址:https://54852.com/langs/875831.html

    (0)
    打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
    上一篇 2022-05-13
    下一篇2022-05-13

    发表评论

    登录后才能评论

    评论列表(0条)

      保存