数据结构与算法_递归

#include<iostream>

using namespace std;

void doA()
{
	cout << "hello" << endl;
	doA();
}
void story() 
{
	cout << "从前有座山,山上有座庙,庙里有个小和尚,老和尚在给小和尚讲故事" << endl;
	story() ;
}

//n! = n * (n - 1)!  阶乘  使用递归 
long mulity(int n)
{
	if(n == 0)	//设定条件,让循环结束 
	{
		return 1;
	}
	else
		return n * mulity(n - 1);
} 
//任何能使用递归解决的问题,都能使用迭代解决
 long  mulity2(int n)
 {
 	long result = 1;
 	for(int i = n; i > 0; i--)
 	{
 		result = result * i;
 	}
 	return result;
 }
 //迭代 二分查找 
int BinarySearch_Iteration(int *array, const int num, const int k)
{
	int left = 0, right = num - 1;
	while(left <= right)
	{
		int mid = (left + right) / 2;
		if(k < array[mid])
			right = mid - 1;
		else if(k > array[mid])
			left = mid + 1;
		else 
			return mid;			
	}
	return -1;
}
//递归 二分查找 
int BinarySearch_Recursion(int *array, const int k, int left, int right)
{
	if(left < right)
	{
		int mid = (left + right) / 2;
		if(k < array[mid])
			return BinarySearch_Recursion(array, k, left, mid - 1);
		else if(k > array[mid])
			return BinarySearch_Recursion(array, k, mid + 1, right);
		else 
			return mid; 
	}
	return -1;
}

 

int main()
{	 
	/***********************递归的基本用法**********************/
	//doA();
	//story();
	//long ret = mulity(5);
	//cout << ret << endl;
	//	for(int num = 0; num < 10; num++)
	//	{
	//		cout << "递归:" << num << " != " << mulity(num) << endl;
	//		cout << "迭代:" << num << " != " << mulity2(num) << endl;
	//	} 
	
	
	/***********************递归的折半查找**********************/
	int array[] = {1, 2, 3 ,4, 5, 6, 7, 8} ;
	int num = 7;
	
	int ret = BinarySearch_Recursion(array, num, 0, 8);
	if(ret < 0)
		cout << "递归 没有找到" << endl;
	else
		cout << "递归 二分查找:在array["<<ret<<"]里找到" <<  num << endl; 
	
	ret = BinarySearch_Iteration(array, 8, num);
	if(ret < 0)
		cout << "迭代 没有找到" << endl;
	else 
		cout << "迭代 二分查找:在array["<<ret<<"]里找到" <<  num << endl; 
	
	
	return 0;
}

在这里插入图片描述

发布了206 篇原创文章 · 获赞 32 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42230338/article/details/104208736