首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单的递归

简单的递归

作者头像
用户8247415
发布2021-04-13 16:14:57
3520
发布2021-04-13 16:14:57
举报
文章被收录于专栏:网页前端网页前端网页前端

简单的递归

void recurs(argumentlist)
{
      statements1
      if (test)
            recurs(arguments)
      statements2
}

递归简单来说便是函数调用自身函数。

在这里插入图片描述
在这里插入图片描述
#include 
void countdown(int n);

int main()
{
    countdown(4);       // call the recursive function
    return 0;
}

void countdown(int n)
{
    using namespace std;
    cout << "Counting down ... " << n << endl;
    if (n > 0)
        countdown(n-1); // function calls itself
    cout << n << ": Kaboom!\n";
}

输出结果

Counting down ... 4 ‹level 1; adding levels of recursion
Counting down ... 3 ‹level 2
Counting down ... 2 ‹level 3
Counting down ... 1 ‹level 4
Counting down ... 0 ‹level 5; final recursive call
0: Kaboom!          ‹level 5; beginning to back out
1: Kaboom!          ‹level 4
2: Kaboom!          ‹level 3
3: Kaboom!          ‹level 2
4: Kaboom!          ‹level 1

下面是多个递归调用

在这里插入图片描述
在这里插入图片描述
#include 
const int Len = 66;
const int Divs = 6;
void subdivide(char ar[], int low, int high, int level);
int main()
{
    char ruler[Len];
    int i;
    for (i = 1; i < Len - 2; i++)
        ruler[i] = ' ';
    ruler[Len - 1] = '\0';
    int max = Len - 2;
    int min = 0;
    ruler[min] = ruler[max] = '|';
    std::cout << ruler << std::endl;
    for (i = 1; i <= Divs; i++)
    {
        subdivide(ruler,min,max, i);
        std::cout << ruler << std::endl;
        for (int j = 1; j < Len - 2; j++)
            ruler[j] = ' '; // reset to blank ruler
    }

    return 0;
}

void subdivide(char ar[], int low, int high, int level)
{
    if (level == 0)
        return;
    int mid = (high + low) / 2;
    ar[mid] = '|';
    subdivide(ar, low, mid, level - 1);
    subdivide(ar, mid, high, level - 1);
}

输出是很有趣的

|                                                               |
|                               |                               |
|               |               |               |               |
|       |       |       |       |       |       |       |       |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

这就是简单的递归,简洁明了,可以多用于自己设计的程序里。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档