浅谈递归之蛋疼

最近太闲,把递归的东西整理一下。

先从最简单的字符串处理函数来看看递归函数,只追求思想,不求代码质量,虽然这些东西用递归写很蛋疼,

eg1.int strLen(char* str);

求字符串长度,代码如下,装逼专用

int strLen(char* str){

  return (*str == '\0')?0:(1 + strLen(++str));
}

eg2.void strCp(char* src, char* dest);

字符串复制

void strCp(char* src, char* dest){
  if(*src == '\0'){
    *dest = *src;
    return;
  }else{
    *dest = *src;
    dest++;
    src++;
    strCp(src, dest);
  }
}

eg3.bool strStr(char* str1, char* str2);

检查str2是否为str1的子串,这个也真够蛋疼的,哈哈

bool strStr(char* str1, char* str2){
  if(*str2 == '\0')
    return true;
  if(*str1 == '\0'){
    return false;
  }else{
    if(*str1 == *str2){
      char* p1 = str1 + 1;
      char* p2 = str2 + 1;
      return strStr(p1, p2);
    }else{
      str1++;
      return strStr(str1, str2);
    }
  }
}

好像没有其他的字符串处理函数了,想起来再补充。

补充个hanoi塔的递归

void hanoi(int n, char a, char b, char c){

  if(n==1){

    cout << n <<":"<<a<<"->"<<c<<endl;

  }else{

    hanoi(n-1,a,c,b);

    cout << n <<":"<<a<<"->"<<c<<endl;

    hanoi(n-1,b,a,c);

  }

}

转载于:https://www.cnblogs.com/yangxiaoluck/p/3730835.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值