递归函数以及部分题型总结

本文介绍了递归函数的概念,其将复杂问题分解为规模更小的相似问题来求解。递归的关键在于递归定义和终止条件。文中列举了多个递归应用实例,包括欧几里得算法求最大公约数、指数运算、阶乘计算、斐波那契数列及集合全排列等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.递归函数直接或者间接调用自身的函数称为递归函数,它通常把一个大型复杂的问题层层转化为一个与原问题相似规模较小的问题来求解。

2.基本思想:把一个不能或不好解决的大问题转化为一个或者几个小问题,再把这些小问题进一步分解成更小的小问题。最小的问题可以直接解决。

3.递归关键:在于找出递归定义递归终止条件

  递归定义:使问题向边界条件转化的规则。递归定义必须能使问题越来越简单。

  递归终止条件:也就是所描述的问题的最简单情况,它本身不再使用递归的定义。

4.解题通常有三个步骤:

(1)分析问题,寻找递归:找出大规模问题与小规模问题的关系,这样通过递归使问题的规模逐渐变小。

(2)设置边界,控制递归:找出停止条件,即算法可解的最小规模问题。

(3)设计函数,确定参数:设计函数体中的操作及相关参数。

相关题型
1.欧几里得算法求两个数的最大公约数
#include<bits/stdc++.h>
using namespace std;
int gcd(int,int);
int main()
{
    int m,n;
    cin>>m>>n;
    cout<<gcd(m,n)<<endl;
    return 0;
}
int gcd(int m,int n)//采用递归算法实现辗转相除法
{
    if(n==0)return m;//余数为零,中止调用子程序
    else return gcd(n,m%n);
}
2.求x^n问题
//分析:把x^n分解为x*x^(n-1),其中x^(n-1)又用x*x^(n-2)求。
//当到达n=0时终止调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值