实验一 递归练习
一、 实验目的
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;
}
结论分析与体会:
做递归的题目需要首先确定递归结束的条件,也是初始条件,然后找出函数的等价关系式,明确递归调用的顺序。