山东大学《数据结构》实验一:递归练习

实验一 递归练习

一、 实验目的

1、熟悉开发工具的使用。 2、掌握递归的实现思想。

二、 实验内容

1、输入 2-20 个大于 0 的正整数(1、2、3 或者 100、200、300),输入 0 作为结束,0 不参与排列。
2、输出这几个整数的全排列,每个数之间用半角“,”隔开,中间不要 有空格,每个排列单独一行。
3、程序一定要有 Input、Output、End 提示信息,但是不要有格式没有出 现的其他提示,以下各实验相同。

代码如下:

#include<iostream>
#include<cstdio>
#include<stdlib.h>
#include<string.h> 
using namespace std;
int a[25];
void perm(int k,int n){
	if(k==n){
		for(int i=0;i<n-1;i++)cout<<a[i]<<",";
		cout<<a[n-1]<<endl;
	}
	else{
		for(int i=k;i<n;i++){
			int t;
			t=a[i];a[i]=a[k];a[k]=t;
			perm(k+1,n);
			t=a[i];a[i]=a[k];a[k]=t;
		}
	}
}
int main(){
	int n;
	cout<<"Input"<<endl;
	for(n=0;cin>>a[n]&&a[n]!=0;n++);	
	cout<<"Output"<<endl;
	perm(0,n);
	cout<<"End"<<endl;	
	return 0;
} 

结论分析与体会:

做递归的题目需要首先确定递归结束的条件,也是初始条件,然后找出函数的等价关系式,明确递归调用的顺序。
发布了11 篇原创文章 · 获赞 0 · 访问量 38

猜你喜欢

转载自blog.csdn.net/weixin_43959421/article/details/103973486