首页 > 代码库 > 使用递归求解1 到最大的n位数

使用递归求解1 到最大的n位数

用求排列方法:

代码:

#include<iostream>  

using namespace std; 
//使用递归求解1 到最大的n位数
void print(char * number){
	bool isBegin = true;
	int length = strlen(number);
	for(int i = 0; i < length; i ++){
		if(isBegin && number[i] != '0')
			isBegin  = false;
		if(!isBegin)
			printf("%c",number[i]);
	}
	printf("\t");
}

void printRecursively(char * number,int length,int index){
	if(index == length - 1){
		print(number);
		return ;
	}
	for(int i = 0;i<10;i++){
		number[index+1] = i + '0';
		printRecursively(number,length,index+1);
	}	
}
 
void printToMaxOfDigits(int n){
	if(n <= 0){
		return;
	}
	char * number = new char[n+1];
	number[n] = '\0';

	for(int i = 0; i< 10 ;i++)
	{
		number[0] = i +'0';	
		printRecursively(number,n,0);
	}
	delete[] number;
}

int main()  
{  
	printToMaxOfDigits(3);
    return 0;  
}