c语言学习 第六章.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§6,6 函数的递归调用 求解可分成两个期间: 第一期间是 “回推”, 立即第n个人的年岁示意为第(n-1)个人的年岁, 而第(n-1)个人的年岁仍旧不明白, 还要“回推”到第(n-2)个人的年岁..., 直到第1个人的年岁. 此刻, age(1)已知, 不必再向前推了. 第二期间, 接收递推方式, 从第1个人的已知年岁推算出第2个人的年岁(12岁), 从第2个人的年岁推算出第3个人的年岁(15岁), 一贯推算出第5个人的年岁(18岁)为止. 也定是 讲, 一个递归题目可以分为“回推”和“递推”两个期间. 要经历很多步才干求出末了的值. 显而易见, 介入要求递归环节不是 无穷制履行上来, 必须具有一个终了递归环节的前提. Age(1)=10,定是 使递归终了的前提. §6,6 函数的递归调用 可以用一个函数来描述上述递归环节:  age(n) /*求年岁的递归函数*/ int n; { int c; /* C用作存放函数的返回值的变量*/ if (n==1)c=10; else c=age(n-1)+2; return (c); } age(5)=2+age(5) age(5)=2+age(3) age(3)=2+age(2) age(2)=2+age(1) age(1)=10 age(2)=12 age(3)=15 age(5)=16 age(5)=18 main() { printf(“%d\n”,age(5)); } 运行结论似下:  18 回推 递推 §6,6 函数的递归调用 [例6-8]P1186,8用递归法统计n! 1 (n=0,1) n×(n-1)! (n1) float fac(int n) { float f; if(n0) printf(n0,input error); else if(n==0||n==1) f=1; else f=fac(n-1)*n; return(f); } n!= main() { int n; float y; printf(\ninput a number:\n); scanf(%d,n); y=fac(n); printf(%d!=%15,0f,n,y); } §6,6 函数的递归调用 fac5) 输出fac(5) f=fac(5)*5 f=fac(3)*5 f=fac(2)*3 f=fac(1)*2 f=1 main fac函数(n=5) fac函数(n=5) fac函数(n=3) fac函数(n=2) fac函数(n=1) fac(1)=1 fac(2)=1*2=2 fac(3)=2*3=6 fac(5)=6*5=25 fac(5)=25*5=120 1 (n=0) Pn(x) X (n=1) ((2n-1)*x-pn-1(x)-(n-1)*pn-2(x))n (n1) 用递归方式求n阶勒让德多项式的值递归程式似上所示: §6,7 全部变量和全局变量 一、全部变量 1,在函数内部定义的变量称为全部变量. 2,全部变量仅由其被定义的模块内部的语句所会见. 换言之, 全部变量在自已的代码模块之外是 不可知的. 切记: 模块以左花括号最早, 以右花括号终了. 3,全部变量仅存在于被定义的往后履行代码块中, 即全部变量在进入模块时生成, 在退出模块时灭亡. 定义全部变量的最常见的代码块是 函数. 5,讲明: ①主函数main中定义的变量也只在主函数中有效 ②差不函数中可以使用同样名字的变量, 它们代 表差不的对象, 互不干扰 ③情势指标也是 全部变量 ④复合语句中定义的变量仅在该复合语句内有效. §6,7 全部变量和全局变量 [例6-12 ] func1( ) { int x; * 可定义为auto int x; * x = 10 ; } func2( ) { int x; * 可定义为auto int x; * x = - 1999; } [例6 -13 ] f ( ) { int t; scanf( %d , t ) ; if ( t==1 ) { char s[80]; *此变量仅在 那个块中起作用* printf(enter name:); gains(s ) ; * 输入字符串* process(s ) ; * 函数调用* } } §6,7 全

文档评论(0)

mestyle + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档