//字符串逆序(递归实现)
//编写一个函数 reverse_string(char * string)(递归实现)
//实现:将参数字符串中的字符反向排列,不是逆序打印。
//要求:不能使用C函数库中的字符串操作函数。
#include <stdio.h>
int my_strlen(char *str)
{
int count=0;
while (*str!='\0')
{
count++;
str++;
}
return count;
}
void reverse_string(char *str)//先交换再逆序
{
char temp;
int len=my_strlen(str);
temp=*str;
*str=*(str+len-1);
*(str+len-1)='\0';//这一步的功能是防止交换后的f再次交换,让字符串剩下bcde
if ( *str!= '\0')
{
reverse_string(str+1);
}
*(str+len-1)=temp;
}
int main()
{ char s[] = "abcdefg";
reverse_string(s);
printf("%s\n", s);
return 0;
}
多种方法实现可以参考http://t.csdnimg.cn/JNx9w
//计算一个数的每位之和(递归实现)
//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
//例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
//输入:1729,输出:19
#include <stdio.h>
int DigitSum(int x)
{
if(x>=1)
{
return x%10+DigitSum(x/10);
}
else {
return 0;
}
}
int main()
{
int i=1729;
int m=DigitSum(i);
printf("%d ",m);
return 0;
}
//求第n个斐波那契数。(不考虑溢出)
#include <stdio.h>
int fib(int n)
{
if (n <= 2)
return 1;
else
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n=10;
printf("%d ",fib(n));
return 0;
}