実験「データ構造」山東大学:再帰的な実践

再帰的な練習を実験

まず、実験の目的

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;
} 

結論分析と経験:

做递归的题目需要首先确定递归结束的条件,也是初始条件,然后找出函数的等价关系式,明确递归调用的顺序。
公開された11元の記事 ウォンの賞賛0 ビュー38

おすすめ

転載: blog.csdn.net/weixin_43959421/article/details/103973486