文档详情

C语言中函数调用机理的探讨.docx

发布:2017-06-05约1.28千字共3页下载文档
文本预览下载声明
C语言中函数调用机理的探讨研究报告 ——以求n 阶勒让德多项式的值为例 一.探究意义 通过c语言中函数调用机理的实例研究,尤其是过程较为为复杂的递归调用,实现对c语言函数调用逻辑关系的深入理解,并能将c语言函数调用这一重要功能运用于实际程序设计中。 探究方法 1.深入阅读理解课本所学相关知识点,结合网上相关资料,做好理论基础准备。 2.将一个数学递推公式利用函数递归调用的方式转换为c语言程序,在此基础上完成递归调用的理解。 三.理论基础 1.函数是由函数首部和函数体两部分组成。函数首部包括 函数类型 函数名(函数参数类型 函数参数(形参)名),函数体包括申明和执行(包含实参)两部分。 2.函数调用的过程 (1)定义函数的形参在未出现函数调用时不占内存的存储单元。在发生函数调用时,形参被临时分配内存单元。 (2)实参对应的值传递给形参,如实例中将3,2分别传给形参中的n,x,然后利用形参完成定义函数中的相关计算。 (3)通过return语句将函数值带回主调函数,如实例中的将a的值带回function(2,3)中,就得到了最终结果。 3.c语言的函数定义是相互平行独立的,但是能实现嵌套调用(调用一个函数中又调用另一个函数),也能实现递归调用(在调用一个函数的过程中直接或间接地调用该函数本身)。 四.实例探究 N阶勒让德多项式的递归公式为: Pnx=1 (n=0)x (n=1)2n-1?x-Pn-1x-n-1?Pn-2xn (n≥1) C 语言程序 过程分析: 总体来看,自定义函数完成该公式的计算部分,主函数完成参数设置,函数调用和结果输出,由于自定义函数是在主函数前编写,可以略过函数申明这一部分。 在主函数中程序运行到function(简写为f)时,开始调用函数,过程如下: fct(3,2)a=10-f(2,2)-2*f(1,2)/3a=f(2,2)=6-f(1,2)-2*f(0,2)/3a=f(1,2)=2a=f(0,2)=1输入3,2n=3n=2n=1n=0 首先输入n(项数),x(自变量),在程序读到function(3,2)时,就把n=3,x=2传递给定义函数中的形参n和x,开始调用定义函数,每???调用f函数后都会产生返回值 a,这个值返回到调用f函数处 。例如,调用n=2时,a=6-f(1)-2*f(0)/3,再调用 f(1)=2,f(0) =1,返回值是3.50000,如下图所示,这个返回值就取代了n=3中的f(2,2),由此就可以得出最后的结果,递归的终止条件是n=0. 运行结果
显示全部
相似文档