栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

21算法课堂-递归

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

21算法课堂-递归

递归可以解决的问题有:

  1. 可分解的问题(汉诺塔)
  2. 多重循环或循环层数不确定的问题(n皇后问题)
  3. 递归定义的问题(逆波兰表达式)
    汉诺塔问题
#include
using namespace std;
void f(char a,char b,char c,int n){
	if(n==0) return ;
	f(a,c,b,n-1);
	cout<"<>num;
	f('A','B','C',num);
}

8皇后问题

#include 
#include
using namespace std;
int num=0;int q[95][8];int row[8]; 
void queen(int i){//考虑第k个皇后
if(i==8){
	for(int k=0;k<8;k++){
		q[num][k]=row[k]+1;//最后解有num个  
	}
	//问题规模的变化+出口
	num++;//!放到循环外部 
	return ;
}
int k=0;int j=0;
for(j=0;j<8;j++){
	for( k=0;k>n;
	queen(0);
	//cout<<8<<"皇后问题"<>num;
		for(int k=0;k<8;k++){
			cout< 

1.使用递归函数一定要注意递归:规模变换+函数出口
2.abs在头文件#include< cmath >
3.确定第i行第j列放皇后做条件判断时一定不要混淆各个变量的含义
4.注意循环的层数,实现逻辑

逆波兰表达式

#include 
#include 
#include
using namespace std;
double exp(){
	char s[20];//string s
	scanf("%s",s);
	switch(s[0]){
		case'+':return exp()+exp();//后递归的符号后计算 
		case'-':return exp()-exp(); 
		case'*':return exp()*exp();
		case'/':return exp()/exp();
		default:return atof(s);//不是符号直接转为数 
		//break;
	}
}
int main(){
	cout< 

使用atof()将字符串转为double

问题:不知道为什么格式化lf输出,为int值的时候-0.000000;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号