1.求“ABCDEF"字符串长度
思路:先把”ABCDEF"存起来,用指针变量指向第一个字符,判断第一个字符是否为‘\0’,是则返回0,否则返回从第一次开始的子母同时加1并使指针后移一位,进而继续判断,直到访问到最后一个字符‘\0’,停止返回给主函数则得到字符串的总个数。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
char* str = "ABCDEF";//运用递归法求字符串长度
int ret = my_strlen(str);
printf("%d\n", ret);
system("pause");
return 0;
}
int my_strlen(const char* str)
{
if (*str == '\0')
return 0;
else
return 1 + my_strlen(1 + str);
}
2.求 n的阶乘:
思路:n!=n(n-1)(n-2)(n-3)....3*2*1;n=1,1
若要求1个及以下的数,直接返回1,否则则返回n(n-1);
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main(){//用递归法求解n!;
int n=0;
scanf("%d", &n);
int ret=fun(n);
printf("%d\n", ret);
system("pause");
return 0;
}
int fun(int n)
{
if (n <= 1)
return 1;
else
return n*fun(n - 1);
}
3.斐波那节数
1,1,2,3,5,8,11即前两个数的和为第三个数
分析:
如果求两个及以下的数,直接返回1;如果求3个及以上的数,则返回(n-1)+(n-2);
#include<stdio.h>
#include<stdlib.h>
int main()
{//用递归法求解斐波那阶数
int ret = fib(2);
printf("%d\n", ret);
system("pause");
return 0;
}
int fib(int n)
{
if (n <= 2)
return 1;
else
return fib(n - 1) + fib(n - 2);
}