• 递归算法


    #include <ctype.h>
    int getch(void);
    void ungetch(int);
    /*getop函数:获取下一个运算符或数值操作数*/
    int getop(char s[])
    {
     int i,c;
     while ((s[0] = c = getch()) == ' ' || c == ' ')
      ;
     s[1] = '';
     if(!isdigit(c) && c != '.')
      return c; /*不是数*/
     i = 0;
     if(isdigit(c)) /*收集整数部分*/
      while(isdigit(s[i++] = c = getch()))
       ;
     if(c=='.')
      while(isdigit(s[++i]=c=getch()))
      ;
     s[i]='';
     if(c!=EOF)
      ungetch(c);
     return NUMBER; 
    }

    #include <stdio.h>
    /*printd函数:打印十进制数n(运用递归算法)*/
    void printd(int n)
    {
     if(n<0)
     {
      putchar('-');
      n=-n;
     }
     if(n/10)
      printd(n/10);
     putchar(n%10+'0');
    }
     
    /*qsort函数:以递增顺序对v[left]...v[right]进行排序*/
    void qsort(int v[],int left, int right)
    {
     int i,last;
     void swap(int v[], int i, int j);
     if(left>=right)     /*若数组包含的元素数少于2个*/
      return;      /*则不执行任何操作*/
     swap(v,left,(left+right)/2); /*将划分子集的元素*/
     last = left;     /*移动到v[0]*/
     for(i=left+1;i<=right;i++)  /*划分子集*/
      if(v[i]<v[left])
       swap(v,++last,i);
     swap(v,left,last);    /*恢复划分子集的元素*/
     qsort(v,left,last-1);
     qsort(v,last+1,right); 
    }
    /*swap函数:交换v[i]与v[j]的值*/
    void swap(int v[], int i, int j)
    {
     int temp;
     temp = v[i];
     v[i] = v[j];
     v[j] = temp;
    }
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    第5-7次OO作业总结分析
    面向对象课程作业1-3总结分析
    OO第四次作业总结
    OO第三次作业总结
    OO第二次作业总结
    OO第一次作业总结
    BUAA 编译源码阅读_pascal
    OO第四阶段总结
    OO第三阶段总结
    OO第二阶段总结
  • 原文地址:https://www.cnblogs.com/TheFly/p/11880890.html
Copyright © 2020-2023  润新知