首页 > 其他 > 详细

reverse_string(char *string)递归实现字符串翻转

时间:2015-03-12 15:10:37      阅读:349      评论:0      收藏:0      [点我收藏+]

函数实现之前 先看一个例子

void fun(int i)
{
	if (i > 0)
		fun(i / 2);
	printf("%d ",i);
}

int main(void)
{
	fun(10);

	return 0;
}

输出结果是什么?

技术分享


这是《c语言深度剖析》中的一个例子  在这个例子中 printf(“%d ”,i);语句是fun函数的一部分 必定执行一次fun函数,就要打印一次。函数展开过程如下:


void fun(int i)
{
	//fun(i/2);
	if (i > 0)
	{
		if (i / 2 > 0)
		{
			if (i / 4 > 0)
			{
				....
			}
			printf("%d ",i/4);
		}
		printf("%d ", i / 2);
	}
	printf("%d ", i );
}

是不是清晰很多?


同样的思路 来完成reverse_string(char *string)函数   代码如下:


/*编写一个函数reverse_string(char * string)(递归实现)*/

#include<stdio.h>
#include<math.h>

void reverse_string(char *string)
{
	if (*(++string) != '\0')
		reverse_string(string);
	printf("%c",*(string-1));
}


int main()
{
	char *a = "abcde";
	reverse_string(a);
	printf("\n");
	return 0;
}


技术分享

reverse_string(char *string)递归实现字符串翻转

原文:http://blog.csdn.net/irean_lau/article/details/44220787

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!