| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4292 人关注过本帖
标题:利用递归的方法编程实现:用户输入一个整数,如输入235,则程序顺序输出2 3 ...
只看楼主 加入收藏
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分: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
快速回复:利用递归的方法编程实现:用户输入一个整数,如输入235,则程序顺序输 ...
数据加载中...
 
   



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

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