经典算法-递归

    一、递归,就是在运行的过程中调用自己。
        构成递归需具备的条件:
 
      1. 子问题须与原始问题为同样的事,且更为简单;
      2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
       下体展现了递归的过程:
接下来通过一个例子来实现递归:
          递归实现十进制到二进制的转换:
             
代码:
#include <stdio.h>
#include <string.h>
void convto(char *s,int n,int b)
{
    char bit[]={"0123456789"};
    int len;
    if(n==0)
    {
        strcpy(s,"");
        return;//该return实现的是当n=0时跳出最内层递归,实现往下循环的目的,接下来执行len=strlen(s);
    }
    convto(s,n/b,b);
    len=strlen(s);
    s[len]=bit[n%b];
    s[len+1]='\0';结束标识符
}
void main(void)
{
  char s[80];
  int i,base,old;
  printf("请输入十进制数:");
  scanf("%d",&old);
  printf("请输入要转换的进制:");
  scanf("%d",&base);
  convto(s,old,base);
  printf("%s\n",s);
 
  return;
}

posted on 2016-05-06 13:27  Cultivate  阅读(149)  评论(0编辑  收藏  举报

导航