━━函数递归调用重载默认参数.pptVIP

  • 1
  • 0
  • 约1.77万字
  • 约 33页
  • 2019-11-06 发布于广东
  • 举报
【例】 //文件f1.h 中定义了一个求阶乘函数aaa() double aaa ( int n ) //函数aaa()的功能是:求n! { double t = 1 ; for ( int i=1 ; i=n ; i++ ) t *= i ; return t ; } //文件f2.h 中定义了一个求组合函数bbb() # include “f1.h” double bbb ( int m , int k ) //函数bbb()的功能是:求C mk = m! / ( k! × (m-k)! ) { return ( aaa( m ) / ( aaa( k ) * aaa( m-k ) ) ) ; } //文件f3.cpp 中定义了main()函数求:3! + C 85 + 7! + C 98 + 4! #include iostream.h #include “f1.h” #include “f2.h” void main ( ) { cout “(3! + C 85 + 7! + C 98 + 4!)= ” ; cout ( aaa( 3 ) + bbb( 8 ,5 ) + aaa( 7 ) + bbb( 9 ,8 ) + aaa( 4 ) ) endl ; } 编译出错! 在文件f3.cpp中文件f1.h被包含了两次,函数aaa()出现重复定义! 【例】 (上例中的文件f1.h 、f2.h 内容修改如下,文件f3.cpp 内容不变) //文件f1.h 中定义了一个求阶乘函数aaa() # ifndef f1 # define f1 double aaa ( int n ) //函数aaa()的功能是:求n! { double t = 1 ; for ( int i=1 ; i=n ; i++ ) t *= i ; return t ; } #endif //文件f2.h 中定义了一个求组合函数bbb() # ifndef f2 # define f2 # include “f1.h” double bbb ( int m , int k ) //函数bbb()的功能是:求C mk = m! / ( k! × (m-k)! ) { return ( aaa( m ) / ( aaa( k ) * aaa( m-k ) ) ) ; } #endif //文件f3.cpp 中定义了main()函数求:3! + C 85 + 7! + C 98 + 4! #include iostream.h #include “ f1.h ” #include “ f2.h ” void main ( ) { cout “(3! + C 85 + 7! + C 98 + 4!)= ” ; cout ( aaa( 3 ) + bbb( 8 ,5 ) + aaa( 7 ) + bbb( 9 ,8 ) + aaa( 4 ) ) endl ; } 运行: (3! + C 85 + 7! + C 98 + 4!)= 5135 * * * ▲▲ * ▲▲ * ▲▲ * ▲▲ * ▲▲ * ▲▲→→→→ * ▲▲ * ▲▲ * ▲▲ C++程序设计 第3章(2) ━━函数的递归调用、重载、默认参数 主要内容 函数的递归调用 递归函数的执行过程 函数的重载 重载函数的注意事项 带默认值的形参 内联函数 程序的多文件结构 编译预处理 函数的递归调用 函数的递归调用: ①直接递归调用:指在一个函数A的定义中,出现了调用自身A的情况,这种调用关系称为直接递归调用,而函数A就是递归函数。 ②间接递归调用:指在一个函数A的定义中,调用了函数B,而在函数B的定义中又调用了函数A,这种调用关系称为间接递归调用,而函数A也是递归函数。 递归算法的关键在于: ①确立递归的公式 ②分析递归的结束条件 递归函数设计的一般方法: ①先判断递归结束条件 ②再进行递归调用 【例】(用递归算法求 n! 。 ) 分析:①确立递归公式: n! = n × (n-1)! ②分析递归结束条件:当 n=0或n=1 时, n

文档评论(0)

1亿VIP精品文档

相关文档