Heim > Datenbank > MySQL-Tutorial > 我的编程学习日志(2)

我的编程学习日志(2)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:12:32
Original
1410 Leute haben es durchsucht

继续1中的进制转换问题,上一个程序以及实现了一个简单的进制转换,不过他却还可以改进,下面就来谈谈他的改进思路及实现。 一、省略数字转字母的过程 上个程序中用一个if判断来把10以上的数字用字母输出,即: for(i=i-1;i=0;i--) { if(yu[i]10) { yu[i]=yu

继续1中的进制转换问题,上一个程序以及实现了一个简单的进制转换,不过他却还可以改进,下面就来谈谈他的改进思路及实现。

 

一、省略数字转字母的过程

上个程序中用一个if判断来把10以上的数字用字母输出,即:

for(i=i-1;i>=0;i--)  
    {  
        if(yu[i]>10)  
        {  
            yu[i]=yu[i]+55;  
            cout
<p> </p>
<p><span>这个做法显然增加了程序执行的时间,因为没有要求转换的数字要用于计算,就可以在保存余数是把余数保存为字符,省略数字转字母的过程:</span></p>
<pre class="brush:php;toolbar:false">char list[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn";
int main()
{
	char yu[100];
	int n,m,i;
	i=0;
	cin>>n;
	cin>>m;
	while(n)
	{
		yu[i]=list[n%m];
		n=n/m;
		i++;
	}
}
Nach dem Login kopieren


Nach dem Login kopieren

这样就不用判断直接输出了!

 

二、用递归代替循环

想想我们的转换思路,我们先用n/m取余数,再用他的商除以m取余,即:(n/m)/m,这样一直循环下去,那么我们就可以用递归来代替循环了,同时也省略了输出的for循环,只要在主函数输入n,m即可,实现过程如下:

void solve(int n,int m)
{
        if(n)
        {
          solve(n/m,m);
          cout>n;
        cin>>m;
        solve(n,m);
}

Nach dem Login kopieren

 

当然,这里没做数字变成字母的转换。

 

关于改进,我能想到的就这么多,还有其他方法的人可以提出来一起讨论。

 

 

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage