#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//最简单的递归
int main()
{
printf("hehe\n");
main();
return 0;
}
//练习1:接受一个整型值,按顺序打印它的每一位
//例如:输入1234 输出 1 2 3 4
#include<stdio.h>
void print(int n)
{
if (n > 9)
{
print(n/10);
}
printf("%d ", n % 10);
}
int main()
{
int num = 0;
scanf_s("%d", &num);
print(num);
return 0;
}
//练习2:编写函数不允许创建临时变量,求字符串的长度
#include<stdio.h>
//有创建了临时变量count
int my_strlen(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
//函数递归的方法
//把大事化小
//my_strlen("bit")'
//1+my_strlen("it");
//1+1+my_strlen("t");
/1/+1+1+my_strlen("")
//1+1+1+0
//3
int my_strlen(char* str)
{
if (*str != '\0')
return 1 + my_strlen(str + 1);
else
return 0;
}
int main()
{
char arr[] = "bit";
int len = my_strlen(arr);//arr是数组,数组传参,传过去的不是整个数组,而是第一个元素的地址
printf("%d\n", len);
return 0;
}
//练习3:求n的阶乘
#include<stdio.h>
Fac1(int i)
{
int j = 0;
int ret = 1;
for (j = 1; j <= i; j++)
{
ret *= j;
}
return ret;
}
int Fac2(int n)
{
if (n <= 1)
return 1;
else
return n * Fac2(n - 1);
}
int main()
{
int i = 0;
scanf_s("%d", &i);
/*int ret=Fac1(i);*///循环的方式
int ret = Fac2(i);
printf("%d ", ret);
return 0;
}
//练习4:求第n个斐波那契数
#include<stdio.h>
Fib(int n)//递归的方式 但求第50个数的时候受限
{
if (n <= 2)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
Fib(int n)//循环的方式
{
int a = 1;
int b = 1;
int c = 1;
while (n > 2)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n = 0;
int ret = 0;
scanf("%d", &n);
TDD - 测试驱动开发
ret = Fib(n);
printf("%d", ret);
return 0;
}