- 0
- 0
- 约1.41万字
- 约 10页
- 2022-12-05 发布于江苏
- 举报
6.2 函数的调用 6.2.5 函数的嵌套调用 【例6.10】 用牛顿迭代法求一个正实数的平方根。 1)算法 (1)设置猜测值初值 (2)如果|猜测值*猜测值-x| 一极小值,则转(4) (3)置新猜测值为(x/猜测值+猜测值)/2,返回(2) (4)猜测值就是满足精度要求的x的平方根。 6.2 函数的调用 6.2.5 函数的嵌套调用 【例6.10】 用牛顿迭代法求一个正实数的平方根。 2)程序 float sqrt_x(float x),abs_x(float x); /*函数类型说明*/ main() { float a; printf(Input a=); scanf(%f,a); if(a0) printf(Input error!\n); else printf(sqrt (%f)=%f\n, a, sqrt_x(a)); } 6.2 函数的调用 float sqrt_x(float x) /*用牛顿迭代法求x的平方根*/ { float epsilon=1e-5, guess=1.0; while(abs_x(guess * guess-x)=epsilon) guess = (x/guess+guess)/2.0; return(guess); } float abs_x(float x) /*求x的绝对值*/ { if (x0) x = -x; return(x); } 【例6.10】 用牛顿迭代法求一个正实数的平方根。 3)程序运行结果 Input a=2.0CR sqrt(2.000000)=1.414216 6.2 函数的调用 6.2.6 函数的递归调用 在定义一个函数的过程中直接或间接地调用该函数本身,称为函数的递归调用。 在编制递归函数时应注意:每个递归过程都要有一个“出口”,函数的变化趋势应不断靠近出口,即必须有一个结束递归过程的条件。当条件成立时终止递归过程,并使程序控制逐层从函数中返回。 6.2 函数的调用 6.2.6 函数的递归调用 【例6.11】 用递归函数计算 n!= 1 n=0 n*(n-1)! n0 按照这个公式,可将求n!的问题变成求(n-1)!的问题,而求(n-1)!的问题又可以变成求(n-2)!的问题,……直到n=0。因为0!=1。因此可以写出如下递归函数: long recur(int n) { if(n==0) return(1); else return(n*recur(n-1)); } 6.2 函数的调用 6.2.6 函数的递归调用 程序运行结果如下: 0!=1 1!=1 2!=2 3!=6 recur(3) 第一次调用 n=3 3* recur(2) 返回值6 第二次调用 n=2 2* recur(1) 返回值2 第三次调用 n=1 1* recur(0) 返回值1 第四次调用 n=0 0!=1 返回值1 【例6.11】 用递归函数计算n!。 用这个函数计算3!的递归调用的执行情况 main() { long recur(); int i; for (i = 0;i=3;i++) printf(%d!=%ld\n, i, recur(i)); } 6.2 函数的调用 6.2.6 函数的递归调用 recur(3) 第一次调用 n=3 3* recur(2) 返回值6 第二次调用 n=2 2* recur(1) 返回值2 第三次调用 n=1 1* recur(0) 返回值1 第四次调用 n=0 0!=1 返回值1 【例6.11】 用递归函数计算n!。 用这个函数计算3!的递归调用的执行情况 6.2 函数的调用 6.2.6 函数的递归调用 在编制递归函数时应注意:每个递归过程都要有一个“出口”,函数的变化趋势应不断靠近出口,即必须有一个结束递归过程的条件。当条件成立时终止递归过程,并使程序控制逐层从函数中返回。例如,0!=1,就是使递归结束的条件。 递归算法通常是把规模较大、较难解决的问题变成规模较小、较易解决的问题。规模小的问题又变成规模更小的问题,并且小到直接得到它的解,从而得到原来问题的解。 6.2 函数的调用 【例6.13】 汉诺塔游戏。 游戏的装置是三根针A、B、C,A针上从小到大放有64个盘子,游戏目标是把这64个盘子从A针移到C针,规则是一次只能移动一个盘子,并且在移动过程中在三根针上都保持大盘在下
您可能关注的文档
- 《基础会计实务》项目六财产清查.ppt
- 《基础会计实务》项目七编制会计报表.ppt
- 《基础会计实务》项目五登记会计账簿.ppt
- 《Windows Server 2003网络服务器管理与使用(第2版)》第八章 配置DNS能够对地址进行解析.ppt
- 《Windows Server 2003网络服务器管理与使用(第2版)》第二章 利用Active Directory配置Windows Server 2003域控制器.ppt
- 《Windows Server 2003网络服务器管理与使用(第2版)》第四章 安装和配置windows XP professional客户端使其登录到域.ppt
- 《Windows Server 2003网络服务器管理与使用(第2版)》第五章 管理硬盘优化资源利用.ppt
- 《Windows Server 2003网络服务器管理与使用(第2版)》第一章 合理规划使Windows server 2003的安装顺利进行.ppt
- 《Windows Server 2003网络服务器管理与使用(第2版)》绪论.ppt
- 《计算机专业英语(第4版)》Unit 1 Hardware Knowledge.ppt
- 2026及未来5年中国镜架平台市场数据分析及竞争策略研究报告.docx
- 2026及未来5年中国全自动高速涂布复合机组市场现状数据分析及前景预测报告.docx
- 2026及未来5年中国防滑减震型工业胶板市场现状数据分析及前景预测报告.docx
- 2026及未来5年中国水晶办公文具数据监测研究报告.docx
- 2026及未来5年中国彩灰大理石数据监测研究报告.docx
- 2026及未来5年中国隔膜式膨胀罐市场现状数据分析及前景预测报告.docx
- 2026及未来5年中国橡皮边PP盒数据监测研究报告.docx
- 2026及未来5年中国亚磷二甲酯市场现状数据分析及前景预测报告.docx
- 2026及未来5年中国自吸油泵市场现状数据分析及前景预测报告.docx
- 2026及未来5年中国触点钨杆市场现状数据分析及前景预测报告.docx
最近下载
- 关注学生身心健康纳入日常管理.pptx
- 江苏海事职业技术学院单招职测参考试题库(含答案).docx VIP
- 2026年安庆医药高等专科学校单招职业适应性考试必刷测试卷含答案.docx VIP
- 卫生事业管理学课件 第二章 管理理论与管理职能.ppt VIP
- 电信行业业务基础知识.docx VIP
- Discovery软件操作完整版.pptx VIP
- QCR 9161-2023铁路工程建设项目临时用地复垦规范.pdf VIP
- 新目标七年级Unit7Itisraining第六课时.ppt VIP
- 新外研版九年级下册英语 Module 5 Unit 1 教案(教学设计).docx VIP
- 2018年新建南昌经景德镇至黄山铁路水土保持方案报告书.pdf
原创力文档

文档评论(0)