| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 905 人关注过本帖
标题:最怕带for循环的递归函数
取消只看楼主 加入收藏
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
收藏
已结贴  问题点数:40 回复次数:1 
最怕带for循环的递归函数

整数分解问题
1=1;
3=1+1+1;3=1+2;3=3;
这个程序我是画了程序运行情况的图才知道为什么search(remainder-i,i,nTerm+1)而不是search(remainder-i,i,nTerm++)
像归并排序这种递归,我现在也不思考程序如何运行了,假设递归是对的,直接往下写。
可如果是这种带for循环的我就头疼了,有人能解释下那个for(){ 递归函数 } 么

程序代码:
#include <stdio.h>
#define MaxN 30

int Terms[MaxN] ;
int N ;
int count ;

void Search( int remainder , int start , int nTerm )
{
    int i;

    if( remainder==0 ) 
    {
        count++ ;    //记录当前结果数,方便输出符号
        if( count%4 != 1 )
            printf(";") ;

        printf( "%d=%d",N,Terms[0] ) ;
        for(i=1 ; i<nTerm ;i++)
            printf( "+%d" , Terms[i] ) ;

        if (count%4==0)
            printf("\n") ;        
    }
    else
    for( i=start ; i<=remainder ; i++ )
    {        
        Terms[nTerm] = i ;
        Search( remainder-i , i , nTerm+1 ) ;        
    }
}


int main()
{
    scanf("%d" , &N) ;
    
    count = 0 ;
    Search(N , 1 , 0) ;
    if(count%4!= 0)
        printf("\n") ;
    return 0 ;

}
搜索更多相关主题的帖子: search 如何 
2015-11-03 19:23
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
收藏
得分:0 
回复 5楼 wmf2014
现在还不会调试。。。
自己画图分析的。。。
如果让我自己写,递归函数输入参数都不知道怎么写。。。。
2015-11-04 20:34
快速回复:最怕带for循环的递归函数
数据加载中...
 
   



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

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