for循环里的递归函数

铁锈_ 铁锈_ 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
整数分解问题
1=1;
3=1+1+1;3=1+2;3=3;
这个程序我是画了程序运行情况的图才知道为什么search(remainder-i,i,nTerm+1)而不是search(remainder-i,i,nTerm++)
像归并排序这种递归,我现在也不思考程序如何运行了,假设递归是对的,直接往下写。
可如果是这种带for循环的我就头疼了,有人能解释下那个for(){ 递归函数 } 么,如果我不画图分析我大概会写成nTerm++
#include <stdio.h>
#define MaxN 30

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


void Search( int remainder , int start , int nTerm )//remainder剩余数值
//start后面的分解项不超过start
// 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 ;

}

...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
铁锈_
C语言 70,040 成员 243,237 内容