zoukankan      html  css  js  c++  java
  • 递归问题

    递归问题不必纠结于细节,只要有大局观就行,比如说我定义一个函数,我说他是干嘛的他就是干嘛的,然后我只需要将出口该干的事情写出来就行了,对于递归调用反正他就能干这件事就行了(我就是规定他是做这个的,其中n变了就行了)。

    比如说有一个递归问题是:编写一个递归函数,用来输出n个元素的所有子集,那么我只需要定义一个函数P(a[],b[],n),我规定这个函数就是将a[],里面的n个元素的所有子集写出来,这时候我递归调用的时候P(a[],b[],n-1),就是a[]里面的n-1个函数的子集写出来,一直到n=1时就直接写出来他自己的元素就可以了,至于n到n-1之间的关系使我们要解决的。当我们知道了n-1个所有子集时,我们现在多了一个变量,我们需要用n-1个的子集的每一个加上这个新增元素之后,再和原来相于。

    P(a[],b[],n)

    {

    if(n==1)

    {

    cout<<a[0]

    }

    else

    {

    b[]==a[n-1];

    for(i=0->n-1)

    {

    swap(b[]<->a[i])

    P(a[],b[],n-1);

    swap(b[]<->a[i])

    }

    }

    }

    反正大概就是这个意思。具体细节不必太纠结。不然会疯掉的。

  • 相关阅读:
    centos7 mongodb3.4 安装
    centos7 开放端口号
    Junit4测试Spring
    selenium浏览器内核监测处理
    mitmproxy(TLS错误)
    爬虫计算两张验证图片的距离(情况一)
    git的git bash使用
    算法
    RBAC权限管理设计
    beego框架返回json数据
  • 原文地址:https://www.cnblogs.com/hackerl/p/3354714.html
Copyright © 2011-2022 走看看