使用递归将十进制转换成任意进制(Number Conversion)

关于递归

什么是递归?

说白了,就是函数自己调用自己,然后被调用的函数继续调用自己,这将无限循环下去,除非代码中有终止调用链的的内容。

解释一下递归的所经历的过程

递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

举个例子:

求解:4!
在这里插入图片描述

#include<stdio.h>
int f(int num);
int main()
{
    
    
  int num=4;
  printf("%d\n",f(num)); 
   return 0;
}
int f(int num)
{
    
    
   if(num==0)
      return 1;
   return num*f(num-1);
}

通过递归将十进制转换成任意进制

思路

首先我们知道十以上的进制有一个特点,从10开始均有大写字母表示,如十六进制(1,2,3,···9,A,B,C,D,E,F),所以在程序中如何解决由字母表示数字成为我们面临的问题,这个问题解决后其实小于10的基数就好处理了,因为不会涉及到字母的问题。

int convert(int value,int radix)
{
    
    
   if(value/radix!=0)                                                  //边界条件
   convert(value/radix,radix);
   if(radix>10)                                                        //判断基数
   {
    
    
      if(value%radix>=10)
      {
    
    
         int temp=value%radix-10;
         char typeChange=(char)(temp+'A');
         printf("%c",typeChange);
      }
      else
      {
    
    
         printf("%d",value%radix );
      }
   }
   else
   {
    
    
      printf("%d",value%radix );
   }
   return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43349916/article/details/104622355