第04章问题求解的模块化.pptxVIP

  • 6
  • 0
  • 约9.14千字
  • 约 54页
  • 2021-12-05 发布于北京
  • 举报
计算机程序设计(C++)第4章 问题求解的模块化(2)西安交通大学计算机教学实验中心卫颜俊内容提要递归与递归函数函数重载可变参数函数函数模板什么是递归?一些数学问题是按如下进行定义:阶乘:n!=n*[(n-1)!]斐波那契数列: fib(0)=0 ,fib(1)=1, fib(n)=fib(n-1)+fib(n-2) 阿克曼函数Ackermann(m,n): 若m=0,返回n+1; 若m0且n=0,返回Ackermann(m-1,1); 若m0且n0,返回Ackermann(m-1,Ackermann(m,n-1)) 递归函数与算法当定义一个函数时,如果其函数体内有调用其自身的语句,则该函数称为递归函数。一个直接或间接地调用了自身的算法就是递归算法。递归调用的方式(1)直接调用其本身 A调用A(2)通过其他函数间接地调用 A调用B, B调用A递归基本规则一个问题是否可以转换为递归来处理必须满足以下条件:(1)必须包含一种或多种非递归的基本形式(2)一般形式必须能最终转换到基本形式(3)由基本形式来结束递归例-1 采用递归算法求n! 阶乘的递归定义格式: 1! = 1 基本形式 n! = n*(n-1)! 递归表达式int fac(int n) // 求阶乘的递归函数{ if(n==1) // 1!=1 return 1; else return n*f

文档评论(0)

1亿VIP精品文档

相关文档