码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:递归   reverse_string   优化   算法   字符串翻转   

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

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)递归实现字符串翻转

标签:递归   reverse_string   优化   算法   字符串翻转   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!