hdoj 2031题代码及详解
2016-04-25 22:22
190 查看
#include<iostream>
using namespace std;
void fun(int n,int m)
{
if(n<m)
{
if(n==10)
printf("A");//如果n<m那n化成m进制的不就是n吗
if(n==11)
printf("B");
if(n==12)
printf("C");
if(n==13)
printf("D");
if(n==14)
printf("E");
if(n==15)
printf("F");
else
printf("%d",n);
}
else
{
fun(n/m,m);//此处极为重要,即递归部份极难理解
fun(n%m,m);
}
}
/*
下面开始详细讲解:
举个例子,例如n=82,m=4;
即为fun(20,4)->fun(5,4)->fun(1,4)
fun(2,4)->fun(0,4)->fun(1,4)
根据程序执行顺序先是fun(n/m,m),后是fun(n%m,m),当执行fun(n/m,m)时,会回到最开始,
仔细琢磨琢磨,对代码水平非常有好处,为什么,个人观点是每次的fun(n%m,m)产生的数据
都存在缓存区,而缓存区和栈类似,为先进后出,哈哈哈,希望对大家有帮助
*/
int main(void)
{
int n,m;
while(cin>>n>>m)
{
if(n<0)//此处为n<0情况;
{
n*=-1;
cout<<"-";
}
fun(n,m);
cout<<endl;
}
}
#include<iostream>
using namespace std;
void fun(int n,int m)
{
if(n<m)
{
if(n==10)
printf("A");//如果n<m那n化成m进制的不就是n吗
if(n==11)
printf("B");
if(n==12)
printf("C");
if(n==13)
printf("D");
if(n==14)
printf("E");
if(n==15)
printf("F");
else
printf("%d",n);
}
else
{
fun(n/m,m);//此处极为重要,即递归部份极难理解
fun(n%m,m);
}
}
/*
下面开始详细讲解:
举个例子,例如n=82,m=4;
即为fun(20,4)->fun(5,4)->fun(1,4)
fun(2,4)->fun(0,4)->fun(1,4)
根据程序执行顺序先是fun(n/m,m),后是fun(n%m,m),当执行fun(n/m,m)时,会回到最开始,
仔细琢磨琢磨,对代码水平非常有好处,为什么,个人观点是每次的fun(n%m,m)产生的数据
都存在缓存区,而缓存区和栈类似,为先进后出,哈哈哈,希望对大家有帮助
*/
int main(void)
{
int n,m;
while(cin>>n>>m)
{
if(n<0)//此处为n<0情况;
{
n*=-1;
cout<<"-";
}
fun(n,m);
cout<<endl;
}
}
相关文章推荐
- java从0开始学习第六课-基本类型和引用类型和程序流程控制
- OC语言,逻辑性的模拟通讯录,大家可以作参考
- (java)删除字符串中出现次数最少的字符
- 有向图的拓扑排序算法JAVA实现
- C++ 类的保护继承与构造函数
- c++语言const关键字
- C# Timer用法及实例详解
- 实际问题与C语言会擦出什么的火花
- Java并发编程:volatile关键字解析
- C++DLL导出类(快排,堆排,插入排序,选择排序,冒泡排序)
- 在Python中使用机器学习(1)—安装四库
- 02.Java 基础 - 继承
- JAVA可视化开发工具:jigloo
- c++作业4
- 异步FIFO
- 如何将Vim改装成一个IDE编程环境(图文)
- yii2基础(二)
- 在Dev C++中制作和使用静态链接库
- 编译原理:C语言词法分析器
- python中实现有序字典