n!=n×(n-1)×(n-2)……2×1
F(4)=4×F(3) 递归阶段 F(3)=3×F(2) F(2)=2×F(1) F(1)=1 终止条件 F(2)=(2)×(1) 回归阶段 F(3)=(3)×(2) F(4)=(4)×(6) 24 递归完成
int fact(int n) {
if(n < 0)
return 0;
else if (n == 0 || n == 1)
return 1;
else
return n * fact(n - 1);
}
#include <stdio.h>
int g1=0, g2=0, g3=0;
int max(int i)
{
int m1 = 0, m2, m3 = 0, *p_max;
static n1_max = 0, n2_max, n3_max = 0;
p_max = (int*)malloc(10);
printf("打印max程序地址\n");
printf("in max: 0xx\n\n",max);
printf("打印max传入参数地址\n");
printf("in max: 0xx\n\n",&i);
printf("打印max函数中静态变量地址\n");
printf("0xx\n",&n1_max);
//打印各本地变量的内存地址
printf("0xx\n",&n2_max);
printf("0xx\n\n",&n3_max);
printf("打印max函数中局部变量地址\n");
printf("0xx\n",&m1);
//打印各本地变量的内存地址
printf("0xx\n",&m2);
printf("0xx\n\n",&m3);
printf("打印max函数中malloc分配地址\n");
printf("0xx\n\n",p_max);
//打印各本地变量的内存地址
if(i) return 1;
else return 0;
}
int main(int argc, char **argv)
{
static int s1=0, s2, s3=0;
int v1=0, v2, v3=0;
int *p;
p = (int*)malloc(10);
printf("打印各全局变量(已初始化)的内存地址\n");
printf("0xx\n",&g1);
//打印各全局变量的内存地址
printf("0xx\n",&g2);
printf("0xx\n\n",&g3);
printf("======================\n");
printf("打印程序初始程序main地址\n");
printf("main: 0xx\n\n", main);
printf("打印主参地址\n");
printf("argv: 0xx\n\n",argv);
printf("打印各静态变量的内存地址\n");
printf("0xx\n",&s1);
//打印各静态变量的内存地址
printf("0xx\n",&s2);
printf("0xx\n\n",&s3);
printf("打印各局部变量的内存地址\n");
printf("0xx\n",&v1);
//打印各本地变量的内存地址
printf("0xx\n",&v2);
printf("0xx\n\n",&v3);
printf("打印malloc分配的堆地址\n");
printf("malloc: 0xx\n\n",p);
printf("======================\n");
max(v1);
printf("======================\n");
printf("打印子函数起始地址\n");
printf("max: 0xx\n\n",max);
return 0;
}
#include <stdio.h>
int fibonacci(int a){//fibonacci数列,第一二项为1;后面的每一项为前两项之和
if (a == 1 || a == 2)
{
return 1;
}else{
return fibonacci(a - 1) + fibonacci(a - 2);
}
}
void main(){
printf("%d\n",fibonacci(40));
}
#include <stdio.h>
int toString(int i, char str[]){//递归将整形数字转换为字符串
int j = 0;
char c = i % 10 + '0';
if (i /= 10)
{
j = toString(i, str) + 1;
}
str[j] = c;
str[j + 1] = '\0';
return j;
}
void main(){
char str[100];
int i;
printf("enter a integer:\n");
scanf("%d",&i);
toString(i,str);
puts(str);
}
#include <stdio.h>
void hanoi(int i,char x,char y,char z){
if(i == 1){
printf("%c -> %c\n",x,z);
}else{
hanoi(i - 1,x,z,y);
printf("%c -> %c\n",x,z);
hanoi(i - 1,y,x,z);
}
}
void main(){
hanoi(10,'A','B','C');
}
int max(int a, int b, int c, int d){
if(a > b && a > c && a > d){
return a;
}else{
max(b,c,d,a);
}
}
int chitao(int i){//猴子吃桃,每天吃一半再多吃一个,第十天想吃时候只剩一个
if(i == 10){
return 1;
}else{
return (chitao(i + 1) + 1) * 2;
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有