《递归算法》与 我所了解的关于substr函数的一些新用法

       1.最近专门学习了递归算法,因为递归算法在数据结构与算法中应用十分广泛,并且起着至关重要的作用,基本上所有数据结构相关的题都要用到递归算法。

      2. 我用递归算法又重新做了之前的题,有了新的收获,相较于普通解法,用递归算法实现起来,代码更加简洁、直观。

以下是我复盘的几道题:

一、

//计算n的阶乘(递归算法);
#include<iostream>
using namespace std;
int f(int n) {
    if (n <= 1) {
        return 1;                                //当n递减至1的阶乘时停止
    }
    return n * f(n - 1);             //即n!==n*(n-1)!每次阶乘都减少一个量
}
int main() {
    int x,a;
    cin>>x;                                                          //输入整数
    a=f(x);                                                   //计算该整数的阶乘
    cout << a;
    return 0;
}

二、

//用辗转相除法计算两数最大公约数
#include<iostream>
using namespace std;
int fun(int a, int b) {
    if (b == 0)                                                                          //退出条件当除数为0时结束
        return a;                                                                                      //将公约数传出
    return fun(b, a % b);                                                                                                                               //利用辗转相除法的原理计算两数最大公约数,逐步抵消12和32的公共约数
}
int main() {
    int ans;
    ans=fun(12,32);                                                                 //求12和32的最大公约数
    cout << ans;
    return 0;
}

------------------------------------------------------------------------------------------------------------------------

3.知识substr 函数相关用法补充,最近在做题的时候了解到substr的一种新用法:

//前序  string s1=BADC
//后续  string s2=BDCA

 p1原用法          s1.substr(1,3)=‘AD’;

              这里指的是AD          (截取从1号开始到3号位置之前的那个字符)

 p2 新用法       s1.substr(1)=‘DC’;

这里指的是DC            (  如果substr中只有一个参数的话,会返回从那个位置之后的字符串)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值