文章目录

  • 1、题目
  • 2、知识点
  • 3、要做好的功课
  • 4、开始解题

1、题目

2、知识点

  • 函数调用

3、要做好的功课

这就是一个 完整的函数

随后,这块部分是函数体。当有地方调用(可以理解为使用)到 fun这个函数的时候,下面圈起来的这部分代码都会执行,范围在第一个左括号到最后一个右括号。

好,那么理解了这个过程后,我们就开始解题了!

4、开始解题


下图红线圈住的这行代码调用了 fun(7)这个函数。

第1次计算:
上图把7传入到了 fun函数中,此时x =7
X=7,经过 if else判断
会执行

else p = x-fun(x-2) = else p = 7 - fun(7-2)

经过上面的第一次计算fun(7-2)=fun(5),它调用了自身,此时x = 5

第2次计算:
else p = 5-fun(5-2) => p = 5-fun(3)
又调用自身的 fun函数,此时:x=3

第3次计算:
else p = 3-fun(3-2) => p =3-fun(1)
又调用自身的 fun函数,此时:x=1

第4次计算:
此时注意,if(x==0||x==1),|| 的意思是说,左边或者右边只要有一个条件是成立的就执行if代码,如果左右两边都不成立,就执行else代码
带入 x=1,此时 1==1,成立
执行: return p = 3。

int fun(int x){int p;if(x == 0 || x==1) return p=3;else p = x-fun(x-2);}void main(){printf(“%d\n“)}相关推荐

  1. void main 和 int main的区别

    main是一切(控制台)程序都必须有的一个入口函数 main函数是否有返回值在绝大多数情况下无关紧要 因为main函数体内的代码一旦运行完毕 这个程序就结束了 int main() 主函数返回的值是0 ...

  2. int main()和void main()

    void main 和 int main的区别就是有无返回值. 在int main 可以出现非 int 类型的东西.在写代码时,一个函数要么有返回值,要么没有返回值没有返回值就用void来表示. ma ...

  3. 下列程序的运行结果是 #include <stdio.h> void main() { int x = 10, y = 20, z = 30;

    1.直接运行程序得出结果 #include <stdio.h>void main() {int x = 10, y = 20, z = 30;printf("%d %d %d % ...

  4. 关于int*p=a与int*p;p=a的解惑

    在学习c语言解惑中遇到这个问题,其中对int *p=&a的写法百思不得其解,查了网上资料得出 这样的理解是错误的 正确理解是 一般来说*p=&a的表示方法是错的,*p=a和p=& ...

  5. const int * 、int * const、int const* 、const int a(){ } 和int a()const { }的区别和联系

    前言:很多人都把const int * .int * const.int const* 的区别和联系搞混,我自己在学习C++的过程中,也经常性          弄不 清楚,今天特意总结一下,作为学习 ...

  6. int * * a[10] int * (*a)[10]和 int(*a[10])() 是什么意思

    int* (*a)[10]; a是一个指向包含10个int型指针元素的数组. 比如: #include <stdio.h>int main() {// 定义数组,包含10个int*int* ...

  7. C++中int *p[4]和 int (*q)[4]的区别

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  8. mysql int(3)_MySQL中int(11)与int(3)的区别_MySQL

    11.2. 数值类型 MySQL支持所有标准SQL数值数据类型.这些类型包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT.RE ...

  9. int CWnd::GetWindowTextW(LPTSTR,int) const”: 不能将参数 1 从“char [10]”转换为“LPTSTR”

    问题描述: [cpp] view plaincopy //定义了三个编辑框控件 接受num1 num2 num3 void CTestDlg::OnBnClickedButton1()   //响应按 ...

  10. c语言int转换成float,int怎么转化为float 将 int型变量n转换成float型变量的方法是...

    请问C语言中如何将int转换为float 将 int型变量n转换成float型变量的方法是 A float n B (float )n C float( n) D( float) ( n)不懂小编的人 ...

最新文章

  1. es的分片和副本_Elasticsearch 集群分配多少分片合理
  2. 《强化学习周刊》第34期:牛津、谷歌、Facebook等 | 自动强化学习 (AutoRL):研究综述和开放性问题...
  3. 计算机组成与结构第二章ppt,计算机组成原理(华科版)第二章 运算方法与运算器.ppt...
  4. jquery:validate的例子{转载}
  5. Ubuntu下搜狗输入法突然无法输入中文
  6. 【博客项目】—项目坏境搭建(一)
  7. android prgoressBar setProgressDrawable 在4.0系统式正常,在2.3系统上不能正常使用的问题...
  8. 深度学习笔记_基本概念_梯度下降及示例代码
  9. C笔记 -- 一个为 IT人士打造的笔记工具
  10. 第一个 DCMTK 程序:显示 DICOM 图像(DCMTK 3.6.4 + Qt 5.14.2 + VS2015)
  11. 从写博到出书:过程全记录
  12. 计算机学院毕业设计题库,计算机信息工程学院毕业设计课题审题表
  13. 【SDOI2015】临行前的夜
  14. arcgis10之获取面要素四至点坐标
  15. spring-boot2 + vue2+element-ui + avue + uni-app (兮家开源商城)
  16. 10.自动代理AutoProxy
  17. 【简单远程控制】 Metasploit应用
  18. 迁移服务器和切换域名
  19. 我的awk常用命令备忘 xargs备忘
  20. 波兰式与逆波兰式的转换和表达式求值

热门文章

  1. jQuery实现倒计时重新发送短信验证码功能示例
  2. 一步一步理解拖拽Drag(四)
  3. SQL重复记录处理(查找,过滤,删除)
  4. openmv探索_4_AprilTag标记追踪
  5. ERROR: function group_concat(character varying) does not exist
  6. mysql 之根据日期(时间)过滤数据
  7. 【福利】本人自学深度学习的300G的学习资料愿与大家分享!一起进步!
  8. 【干货】如何打造高质量的NLP数据集
  9. 逼疯一个程序员有多简单?
  10. 【开学福利】13本python+AI书籍,快拿去