#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
/*
**项目名称:递归实现打印整数的每一位
**完成时间:2019年11月19日
*/
void Print_digit(int n)
{
if (n > 10)
{
Print_digit(n / 10);
}
printf("%d ", n % 10);
}
int main()
{
Print_digit(9527);
system("pause");
return 0;
}
2.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
/*
**项目名称:递归和非递归实现n的阶乘
**完成时间2019年11月19日
*/
int Facto1(int n)
{
if (n == 1)
{
return 1;
}
return n * Facto1(n - 1);
}
int Facto2(int n)
{
int res = 1;
for (int i = 1; i <= n; i++)
{
res *= i;
}
return res;
}
int main()
{
int n = 6;
int res1 = Facto1(n);
int res2 = Facto2(n);
printf("%d\n", res1);
printf("%d\n", res2);
system("pause");
return 0;
}
3.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
/*
**项目名称:递归和非递归实现strlen
**项目名称:完成时间2019年11月19日
*/
int String_len1(char * str)
{
if (*(str + 1) == '\0')
{
return 1;
}
return 1 + String_len1(str + 1);
}
int String_len2(char* str)
{
int n = 1;
for (; *(str + 1) != '\0'; str++)
{
n++;
}
return n;
}
int main()
{
char str[] = "abcdef";
int n1 = String_len1(str);
int n2 = String_len2(str);
printf("%d\n",n1);
printf("%d\n",n2);
system("pause");
return 0;
}
4.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
/*
**项目名称:利用递归计算n的k次方
**完成时间:2019年11月18日
*/
int Power(int n, int k)
{
if (k == 1)
{
return n;
}
return Power(n, k - 1) * n;
}
int main()
{
int n = 2;
int k = 10;
printf("n = %d,k = %d,计算结果为:%d\n", n,k,Power(n, k));
system("pause");
return 0;
}
5.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
/*
**项目名称:斐波那契数列
**项目功能:通过递归和非递归实现求第n个斐波那契数
**完成时间:2019年11月18日
*/
int Fibona1(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
return Fibona1(n - 1) + Fibona1(n - 2);
}
int Fibona2(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
int fo = 1;
int ft = 1;
int cur = 0;
for (int i = 3; i <= n; i++)
{
cur = fo + ft;
if (i == n)
{
break;
}
else
{
ft = fo;
fo = cur;
}
}
return cur;
}
int main()
{
for (int i = 1; i < 10; i++)
{
printf("%d ", Fibona1(i));
}
printf("\n");
for (int i = 1; i < 10; i++)
{
printf("%d ", Fibona2(i));
}
printf("\n");
system("pause");
return 0;
}
6.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
/*
**项目名称:整数的各数字之和
**项目功能:输入一个非负整数,返回它各数位上的数字之和
**完成时间:2019年11月19日
*/
unsigned DigitSum(unsigned n)
{
if (n < 10)
{
return n;
}
return n % 10 + DigitSum(n / 10);
}
int main()
{
unsigned a = 9527;
printf("%u\n", DigitSum(a));
system("pause");
return 0;
}
7.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
/*
**项目名称:递归实现字符串逆置
**完成时间:2019年11月19日
*/
void Reverse_string(char* string)
{
//逆序遍历
//将当前所指向的字符插入到函数返回字符串的后面
if (*(string + 1) != '\0')
{
Reverse_string(string + 1);
}
char c = *string;
while (*(string + 1) != '\0')
{
*string = *(string + 1);
string++;
}
*string = c;
}
int main()
{
char str[] = "abcdef";
printf("%s\n", str);
Reverse_string(str);
printf("%s\n", str);
system("pause");
return 0;
}