一、题目分析
将非负十进制整数n转换成b进制。(其中b=2~16)
基本要求:
1.完成题目,采用递归思想编程解决问题,要求设计出递归模型(递归出口和递归体的函数式)。
2.程序设计风格良好,实现功能测试代码,确保程序的健壮性。
3.画出递归树或者递归栈的调用过程。
4.实现非递归方法。
二、算法构造
1、递归算法
由题意可知,定义一个有两个参数的递归函数change(before,after)。其中,before表示需要进行转换的数字,after表示即将转换的进制。得到下面的递归公式:
change(before,after) = { change(0,after) before=0
change(before/after,after) before>0
利用求余数的方法来对应a[]数组的大小来求得相应的进制数,
2、非递归算法
依旧是利用求余数的方式相应转换进制,直到判断before<jz输出结束。
三、算法实现
#include<iostream>
#include<string.h>
using namespace std;
char a[]="0123456789abcdef";
//递归
void change(int before,int jz)
{
if(before=0)
{
return ;
}
else
{
change(before/jz,jz);
cout<<a[before%jz];
}
}
/*
//非递归
int Exchange(int before, int jz)
{
int p=1, y=0;
int remainder=0;
while (1)
{
remainder=bef