|
20鱼币
#include <stdio.h>
int f(int x)
{
if(x < 2)
return 1;
return x*f(x-1) + (x-1)*f(x-2);
}
void main()
{
int y;
y = f(4);
printf("%d\n", y);
}
本帖最后由 风过无痕1989 于 2020-9-21 22:42 编辑
- #include <stdio.h> // 预处理,也即是调用C语言为编程人员准备的库函数,因为后面的 printf() 函数由 stdio.h 这个头函数定义的
- int f(int x) // 定义 f 函数,x 就是 f 函数的形式参数(简称“形参”),此函数就是为了本程序的具体要求而设计的
- {
- if(x < 2) // 如果从主函数传过来的实参 x 值小于 2,执行下一条语句,向主程序返回,返回值为1,并将该返回值赋给 y
- {
- return 1;
- }
- else // 为了让你看得更清楚,此处我增加了一条 else 语句和花括号
- {
- return x*f(x-1) + (x-1)*f(x-2); // 如果从主函数传过来的 x 值大于等于 2,则跳过前一条语句,执行此条语句,表达式执行后,
- // 若式中的 f() 函数括号里的实参仍然大于 2,则继续递归调用 f() 函数括号里的实参小于 2
- // ( 注意:还是要执行上面那个花括号里的语句,多返回一个 1 的),返回主程序,并将该返回值赋给 y
- }
- }
- void main() // 程序编译好以后,执行此行 main() 函数,这是主程序( main() 是程序的入口,所有程序都是从它开始的)
- {
- int y; // 定义整型变量 y
- y = f(4); // 调用 f 函数,数字 4 是这个函数的初始实参,f 函数的返回值赋给 y,若返回值大于 2,继续调用 f 函数;若返回值小于 2 ,结束调用
- printf("%d\n", y); // 以整型格式输出 f 函数最终的返回值(返回值先赋给变量 y)
- }
复制代码
递归调用 x*f(x-1) + (x-1)*f(x-2) 的过程在2楼已经详尽的列出了
|
最佳答案
查看完整内容
递归调用 x*f(x-1) + (x-1)*f(x-2) 的过程在2楼已经详尽的列出了
|