打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
数据结构算法

递归(recursion):程序调用自身的编程技巧。

  递归满足2个条件:

    1)有反复执行的过程(调用自身)

    2)有跳出反复执行过程的条件(递归出口)

 

递归例子:

(1)阶乘

         n! = n * (n-1) * (n-2) * ...* 1(n>0)

//阶乘int recursive(int i){	int sum = 0;	if (0 == i)		return (1);	else		sum = i * recursive(i-1);	return sum;}

(2)河内塔问题

//河内塔void hanoi(int n,int p1,int p2,int p3){	if(1==n)		cout<<"盘子从"<<p1<<"移到"<<p3<<endl;	else	{		hanoi(n-1,p1,p3,p2);		cout<<"盘子从"<<p1<<"移到"<<p3<<endl;		hanoi(n-1,p2,p1,p3);	}}

3)全排列

  从n个不同元素中任取mm≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

  如1,2,3三个元素的全排列为:

  1,2,3

  1,3,2

  2,1,3

  2,3,1

  3,1,2

  3,2,1 

//全排列inline void Swap(int &a,int &b){	int temp=a;	a=b;	b=temp;}void Perm(int list[],int k,int m){	if (k == m-1) 	{		for(int i=0;i<m;i++)		{			printf("%d",list[i]);		}		printf("n");	}	else	{		for(int i=k;i<m;i++)		{			Swap(list[k],list[i]); 			Perm(list,k+1,m);			Swap(list[k],list[i]); 		}	}}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
三种快速排序算法的实现(递归算法、非递归算法、三路划分快速排序)
全排列递归算法有必要解释
全排列算法原理和实现
算法之排列与组合算法 | 董的博客
算法设计与分析 2.1 递归的概念 [例2.4]全排列问题
知识点总结之排序算法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服