再帰的な練習を実験
まず、実験の目的
1、使い慣れた開発ツールを使用して。2、再帰的な実装のアイデアを把握します。
第二に、実験的なコンテンツ
1、2から20への入力の正の整数を(2、3、または200、300)が0より大きい場合、0の入力端、0を配列に関与しません。
図2に示すように、整数のこれらの完全な配列「」の間に半角の数とそれぞれの出力は、それぞれ別々の列に配置され、スペースなしで、分離しました。
3、プログラムは入力、出力、終了メッセージを持っている必要がありますが、他のヒントがある以下の実験と同じフォーマットで表示されません。
コードは以下の通りであります:
#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;
}
結論分析と経験:
做递归的题目需要首先确定递归结束的条件,也是初始条件,然后找出函数的等价关系式,明确递归调用的顺序。