标题:利用递归的方法编程实现:用户输入一个整数,如输入235,则程序顺序输出2 3 ...
只看楼主
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
这个图是醉了,不过先执行再复用当前函数的建议还是用循环
递归或者说是函数重入,主要关注收敛条件也就是运行结束的判断
先复用再执行的场景比较多,所以循环做起来有困难的可以考虑这个递归
建议不要上来就采用递归
下面举两个例子
比如
程序代码:
#include<stdio.h>
void trace(int n){
    if(n>0){//收敛条件
        trace(n-1);//函数重入
        printf("%d",n);
    }
}
int main(){
    trace(4);
}

这里就是,每次先不停的纵深,直到倒数第二步n=1,执行trace(0)判断false无输出
然后开始倒扒皮慢慢往外退,继续上一轮trace(n-1)下面的任务

下面是高中的排列组合的例子,可以试着分析下
程序代码:
#include<stdio.h>
void trace(int arr[],int len,int arr2[],int len2,int size)
{
    if(len2>=size)
    {
        for(int i=0;i<size;i++)
            printf("%d\t",arr2[i]);
        printf("\n");
        return;
    }
    for(int i=0;i<len;i++)
    {
        if(len2==0||arr[i]>arr2[len2-1])
        {
            arr2[len2]=arr[i];
            trace(arr,len,arr2,len2+1,size);
        }
    }
}
int main()
{
    int arr[4]={1,2,3,4};
    int arr2[4];
    trace(arr,4,arr2,0,3);
}


剑栈风樯各苦辛,别时冰雪到时春
2020-02-10 07:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498902-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.242101 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved