1、算法学习笔记--递归与分治

本文详细介绍了递归的概念和分治策略,包括递归的两个关键要素,如阶乘函数、Fibonacci数列、全排列问题和整数划分的实例。同时,探讨了分治算法的应用,如棋盘覆盖、排序(合并排序、快速排序)以及二分搜索法的时间复杂度分析。
摘要由CSDN通过智能技术生成

一、递归
1、递归的概念
直接或间接的调用自身的算法称为递归算法。
用函数自身给出定义的函数称为递归函数。
二要素:边界条件和递归方程

1.1阶乘函数
当n=0,n!=1;
当n>0,n!=n*(n-1)!

#include<iostream> 
using namespace std;
int factorial(int n)
{
	if(n==0) return 1;            /*边界条件*/
	else return n*factorial(n-1); /*递归方程*/
}
int main()                      /*以下算法调用过程类似,不再给出*/
{
	int result;
	int n; 
	while(cin>>n)
	{
		result = factorial(n);
		cout<<result<<endl;
	}
	return 0;
}

1.2 Fibonacci 数列
当n=0||n=1,F(n)=1;
当n>=2,F(n)=F(n-1)+F(n-2)

int Fibonacci(int n)
{
	if(n<=1) return 1;
	return Fibonacci(n-1)+Fibonacci(n-2);
}

1.3 排列问题–全排列
设·R={r1,r2,r3,…,rm}为要进行全排列的m个元素,Perm(R)为集合R的全排列&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值