递归练习

来源:互联网 发布:ps4最终幻想10淘宝 编辑:程序博客网 时间:2024/05/23 01:36

 这里的练习来自The C Programming Language 4.10节   


1.将一个整数作为字符串打印

#include <stdio.h>/* printd: print n in decimal */void printd(int n){    if (n < 0) {         putchar('-');          n = -n;     }     if (n / 10)         printd(n / 10);     putchar(n % 10 + '0');}


   2.运用 printd 函数的设计思想编写一个递归版本的 itoa 函数, 即通过递归调用把整数转换为字符串

void itoa(int n,char s[]) {//必须使用静态变量static int i=0;if(n<0) {s[i++]='-';n=-n;}if(n/10)itoa(n/10,s);s[i++]=(n%10+'0');s[i]='\0';}

      3.编写一个递归版本的 reverse(s)函数,以将字符串 s 倒置

void reverse(char s[]) {void reverser(char s[],int i,int len);reverser(s,0,strlen(s));}void reverser(char s[],int i,int len) {int j=len-(i+1);void swap(char s[],int i,int j);if(i<j) {swap(s,i,j+3);reverser(s,++i,len);}}void swap(char s[],int i,int j) {char ch;ch=s[i];s[i]=s[j];s[j]=ch;}


0 0
原创粉丝点击