以下代码头文件可能没声明,还请读者自己声明一下。
1、递归方式实现打印一个整数的每一位
//int print(int n)
//{
// if (n > 10)
// {
// print(n / 10);
// }
// printf("%d\n", n % 10);
//}
//
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// print(n);
// return 0;
//}
2、递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
//int fact(int n)
//{
// if (n == 1)
// return 1;
// else
// return n*fact(n - 1);
//}
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// int ret=fact(n);
// printf("%d", ret);
// return 0;
//}
//int main()
//{
// int n = 0;
// int fact= 1;
// scanf("%d", &n);
// while(n >= 1)
// {
// fact = fact * n;
// n--;
// }
// printf("%d", fact);
//
// return 0;
//}
3、递归和非递归分别实现strlen函数
//int my_strlen(char* p)
//{
// int count = 0;
// int i = 0;
// while(*p != '\0')
// {
// count++;
// p++;
// }
// return count;
//}
//int main()
//{
// char len[] = "abcd1";
// int ret = my_strlen(len);
// printf("%d", ret);
// return 0;
//}
//递归算法
//int my_strlen(char* p)
//{
// if (*p != '\0')
// return 1 + my_strlen(p + 1);
// else
// return 0;
//}
//int main()
//{
// char len[] = "abcd";
// int ret = my_strlen(len);
// printf("%d", ret);
// return 0;
//}
4、
编写一个函数 reverse_string(char* string)(递归实现)
//实现:将参数字符串中的字符反向排列,不是逆序打印。
//要求:不能使用C函数库中的字符串操作函数。
//比如 :
//char arr[] = "abcdef";
//逆序之后数组的内容变成:fedcbaS
//char reverse_string(char* str)
//{
// if (*str == '\0')
// {
// return;
// }
// reverse_string(str + 1);
// printf("%c", *str);
//}
//int main()
//{
// char arr[] = "abcdef";
// reverse_string(arr);
// return 0;
//}
5、编写一个函数实现n的k次方,使用递归实现。
//int square(int n, int k)
//{
// if (k > 1)
// return n * square(n, k - 1);
// else
// return n;
//}
//int main()
//{
// int n = 0;
// int k = 0;
// scanf("%d", &n);
// scanf("%d", &k);
// int ret=square(n,k);
// printf("%d", ret);
// return 0;
//}
6、求第n个斐波那契数列
//int Fib(int n)
//{
// if (n <= 2)
// return 1;
// else
// return Fib(n - 1) + Fib(n - 2);
//}
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// int ret = Fib(n);
// printf("%d", ret);
// return 0;
//}
int Fib(int n)
{
int i = 1;
int a= 1;
int b = 1;
int c = 1;
if (n <= 2)
return 1;
else
{
for (i=3;i<=n;i++)
{
c = a + b;
b = a;
a = c;
}return c;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fib(n);
printf("%d", ret);
return 0;
}