#include <stdio.h>
#include <string.h>
//练习:
//1.写一个函数可以判断一个数是不是素数
//2.写一个函数判断一年是不是闰年
//3.写一个函数,实现一个整数有序数组的二分查找
//4.写一个函数,每调用一次这个函数,就会将num的值增加1.
//4.
//void Add(int*p)
//{
// (*p)++;
//
//}
//
//int main() {
// int num = 0;
// Add(&num);
// printf("%d\n",num);//1
//
// Add(&num);
// printf("%d\n",num);//2
//
// Add(&num);
// printf("%d\n",num);//3
//
// return 0;
//}
//函数的嵌套调用和链式访问
//
//嵌套调用(不能嵌套定义:不能在函数中定义函数)
//void test3(){
// printf("hehe\n");
//}
//
//int test2(){
// test3();
// return 0;
//}
//
//int main(){
// test2();
// return 0;
//}
//int main(){
// //int len = strlen("abc");
// //printf("%d\n",len);
//
// // //链式访问(把一个函数的返回值做另一个函数的参数)
// //printf("%d\n",strlen("abc"));
//
// /*char arr1[20] = { 0 };
// char arr2[] = "ha";
//
// printf("%s\n",strcpy(arr1,arr2));*/
//
// printf("%d",printf("%d",printf("%d",43)));//4321
// //printf(函数返回的是打印在屏幕上的字符的个数)
// return 0;
//}
//函数的声明和定义
函数的定义
//int Add(int x,int y){
// return x + y;
//}
//int mian(){
// int a = 10;
// int b = 30;
// //函数声明一下 - 告知
// int Add(int,int);
//
// int c = Add(a,b);
// printf("%d\n",c);
// return 0;
//}
//函数的递归
//递归:函数自己调用自己
//int main(){
// printf("hehe\n");
// main();
//
// return 0;
//}
//练习:
//1.接受一个整型值(无符号),按照顺序打印它的每一位。
//1.
//void print(unsigned int n) { //123
// if (n > 9) {
// print(n / 10);
// }
// printf("%d ", n % 10);
//}
//int main() {
// unsigned int num = 0;
// scanf("%u", &num); //123
// //递归 - 函数自己调用自己
// print(num);//print可以打印参数部分数字的每一位
//
// return 0;
//}
//err(错误的)
void test(int n) {
if (n < 10000) {//栈溢出
test(n + 1);
}
}
int main() {
test(1);
return 0;
}
//写递归代码时:
//1.不能死递归,都有跳出条件,每次递归逼近跳出条件
//2.递归层次不能太深
//https://stackoverflow.com/
//程序员的知乎(提问前提:英文)