简单的递归实例
//
// Created by a1073 on 2019/7/3.
//
#include <stdio.h>
void recursion(){
static int count = 10;
printf("hi!");
if(count--){
recursion();
}
}
int main(void) {
recursion();
return 0;
}
/*
* hi!hi!hi!hi!hi!hi!hi!hi!hi!hi!hi!
*/
阶乘
//
// Created by a1073 on 2019/7/3.
//
#include <stdio.h>
int factorial(int);
void f(int);
int count = 1;
int main(void) {
int num;
printf("please input a integer:\n");
scanf("%d", &num);
printf("%d! = %d\n", num, factorial(num));
f(num);
printf("%d! = %d\n", num, count);
return 0;
}
int factorial(int n) {
// 标准写法
int result;
if (n > 0){
result = n * factorial(n - 1);
}else{
result = 1;
}
return result;
}
void f(int n){
// 自己的想法(缺点1:使用全局变量,缺点二:迭代思路不够清晰)
count = count * n;
n--;
if (n > 0){
f(n);
} else{
return;
}
}
递归:调用函数本身,设置正确的结束条件