
非递归实现逆序题目:
用递归实现逆序字符数组,而不是逆序打印,并且不能使用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交换
如图所示,
- 将’
- 逆序数组bcde ’放到f处(因为字符串是以’
- 逆序完bcde再把a放到f处 ’为结束标志)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}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)