#include <stdio.h>
void f();
void g();
void k();
int main()
{
f();
return 0;
}
void f()
{
g();
printf("11\n");
}
void g()
{
printf("22\n");
k();
}
void k()
{
printf("哈哈\n");
}
#include <stdio.h>
void f(int );
int main()
{
f(3);
return 0;
}
void f(int n)
{
if(1 == n) //变量放右边,常量值放左边[好习惯]
{
printf("哈哈\n");
}
else
{
f(n-1);
}
}
A函数调用B函数举例1
#include <stdio.h>
//直接调用
int f(int n);
int main()
{
int val;
val = f(5);
/*
当在main函数的运行期间调用f函数时,在运行被调函数之前,系统需要完成三件事
1. 将所有的实际参数,主调函数下一条语句的返回地址等信息传递给被调函数f保存
2. 为被调函数f的局部变量(也包括形参)分配存储空间
3. 将控制转移到被调函数f的入口
*/
printf("val = %d\n", val);
return 0;
}
int f(int n)
{
n += 2;
return n;
/*
从被调函数返回主函数之前,系统也要完成三件事
1. 保存被调函数f的返回结果
2. 释放被调函数f所占的存储空间
3. 依照被调函数f保存的返回地址将控制转移到主调用函数main
*/
}
A函数调用B函数举例2
#include <stdio.h>
//间接调用
int f(int m);
int g(int n);
int main()
{
int val;
val = f(5);
printf("val = %d\n", val);
return 0;
}
int f(int m)
{
m = g(m);
return m;
}
int g(int n)
{
n *= 2;
return n;
}
A函数调用A函数举例
#include <stdio.h>
int f(int n);
int main()
{
int val;
val = f(5);
return 0;
}
int f(int n)
{
if(3 > n)
{
printf("哈哈\n");
}
else
{
n = f(n-1);
}
return n;
}
#include <stdio.h>
void f(long n);
long g(long m);
//for循环实现
/*
int main()
{
int val;
printf("请输入一个数字:");
printf("val = ");
scanf("%d", &val);
f(val);
return 0;
}
void f(long n)
{
int i;
long mult = 1; //mult: multiple
for(i = 1; i<=n; i++)
{
mult = mult * i;
}
printf("%ld的阶乘是:%ld\n", n, mult);
return;
}
*/
/*——————————————————————————————————————*/
//递归实现
int main()
{
long mult; //mult: multiple
mult = g(3); //假定m是大于或等于0的值
printf("3的阶乘是:%ld\n", mult);
return 0;
}
long g(long m)
{
if(1 == m || 0 == m)
{
return 1;
}
else
{
return g(m-1) * m;
}
}
#include <stdio.h>
long sum(int n);
int main()
{
printf("100以内的整数和是:%d\n", sum(100));
return 0;
}
long sum(int n)
{
if(1 == n)
{
return 1;
}
else
{
return sum(n-1)+n;
}
}
#include <stdio.h>
void hanoi(int, char, char , char);
int main()
{
int n;
char A = ‘A‘;
char B = ‘B‘;
char C = ‘C‘;
printf("请输入需要移动盘子的个数:\n");
scanf("%d", &n);
hanoi(n, A, B, C);
return 0;
}
void hanoi(int n, char a, char b, char c)
{
if(1 == n) //此时是原柱子【没有移动前】最上方的一个盘子,编号为1
{
printf("把编号为%d的盘子 直接从%c移动到%c上\n", n, a, c);
}
else
{
// 源头 借助 目标
hanoi(n-1, a, c, b);
printf("把编号为%d的盘子 从%c移动到%c上\n", n, a, c);
hanoi(n-1, b, a, c);
}
}
//该函数所处理的数据规模必须在递减[要解决n个问题,必须先解决n-1个问题]
//假定此题需要移动5个盘子,就需要先把上面4个盘子移到另一个柱子,要移动4个盘子,就需要先把上面3个盘子移到另一个柱子......
#include <stdio.h>
int f(int i);
int f(int i)
{
if (i == 0 || i == 1)
{
return i;
}
else
{
return f(i - 1) + f(i - 2);
}
}
int main()
{
int i, n;
n = 20;
for (i = 0; i < n; i++)
{
printf("F(%d) = %d\n", i, f(i));
}
return 0;
}
原文:https://www.cnblogs.com/gmengshuai/p/13909681.html