几道典型的递归算法例题
来源:互联网 发布:淘宝千人千面影响 编辑:程序博客网 时间:2024/05/17 04:11
1.求前N个自然数之和
int Sum(int n){if(n==1)return 1;return n+Sum(n-1);}2.求N的阶乘
int Factorial(int n){if(n==1)return 1;return n*Factorial(n-1);}
3.逆序打印单链表
struct Node{Node* _next;int value;};void ReversedPrint(Node* pHead){if(pHead==NULL)return ;if(pHead){ReversedPrint(pHead->_next);cout<<pHead->value<<" ";}}
4.逆序销毁单链表
struct Node{Node* _next;int value;};void Destory(Node*& pHead){if(pHead==NULL)return ;if(pHead){Destory(pHead->_next);pHead=NULL;}}
5.在单链表中逆序查找某个值为data的结点
struct Node{Node* _next;int value;};Node* ReversedFind(Node* pHead,int data){if(pHead){Node* pcur=ReversedFind(pHead->_next,data);if(pcur)return pcur;else{if(pHead->value==data)return pHead;}}elsereturn NULL;}
6.二分查找递归形式
int BinarySearch(int* arr,int left,int right,int data){assert(arr);if(left<=right){int mid=(left&right)+((left^right)>>1);if(arr[mid]==data){return mid;}else if(arr[mid]>data){return BinarySearch(arr,left,mid-1,data);}else{return BinarySearch(arr,mid+1,right,data);}}elsereturn -1;}
7.逆序打印数组中的元素
void ReversePrintArray(int* arr,int size){assert(arr);if(size!=0){cout<<arr[size-1]<<" ";ReversePrintArray(arr,size-1);}elsecout<<endl;}
8.判断一个字符串是否为回文
bool IsPalindereme(char* str,int left,int right){assert(str);if(left<right){if(str[left]==str[right]){return IsPalindereme(str,left+1,right-1);}elsereturn false;}elsereturn true;}
9.研究Perm是怎么调用的,并给出其时间复杂度
void Print(int* arr,int size){for(int i=0;i<size;i++){cout<<arr[i]<<" ";}cout<<endl;}void Perm(int* arr,int size,int n){assert(arr);if(n<size){for(int i=n;i<size;i++){swap(arr[n],arr[i]);//Print(arr,size);Perm(arr,size,n+1);swap(arr[n],arr[i]);}}else{Print(arr,size);}}
0 0
- 几道典型的递归算法例题
- 二叉树的几道典型例题
- 【典型例题】遍历文件夹下面的文件;(递归算法)
- 典型的递归算法
- 浅谈递归算法的两道例题
- 递归算法的两道例题
- 数论的典型例题
- 基于C语言的几道算法例题
- 递归算法 例题
- 递归算法经典例题
- c典型算法 递归
- c典型算法 递归
- 递归典型算法
- 几种典型的立体匹配算法
- 几种典型的立体匹配算法
- 几种典型的立体匹配算法
- 几种典型的立体匹配算法
- 动态规划的典型例题
- ACM 6174问题
- 重放攻击
- python基础入门
- URAL 1992 CVS
- struts2之数据处理的三种方式
- 几道典型的递归算法例题
- HDU 1711 Number Sequence (KMP模板题)
- 十三、JDK的命令行工具
- while(cin>>word) 分析
- vmware虚拟机ubuntu和red hat等vmware tools安装问题
- jq实现二级下拉菜单动画效果
- Spark源码分析之分区器的作用
- spring源码-1- xml的加载与注册
- JAVA 读取Properties配置文件