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(){ 递归函数 } 么,如果我不画图分析我大概会写成nTerm++
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 ;
}
...全文
相关推荐
JAVA练习题(for循环练习题等)
30道java练习题,包括for循环练习题,do...while练习题,switch...case练习题等...
java for循环与增强for循环
增强型的for循环 和普通for循环一样 增强型的for循环 优点主要体现在集合中,随便举个例子 比如对 set 的遍历 一般是迭代遍历
在Python中,不用while和for循环遍历列表的实例
今天小编就为大家分享一篇在Python中,不用while和for循环遍历列表的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
for循环和while循环的区别和简单应用
for循环和while循环for循环for循环基本概念for循环的例子while循环while循环的概念while循环的例子 for循环 for循环基本概念 for循环可以从一个有序集合里依次把元素拿出来并且赋值给name,比如list,tuple和字符串。 for循环的例子 a = 'adbcd' #这是一个字符串 for name in a: print(name) >>>a d b c d #依次把adbcd打印出来 注意 这是依次不是一起 list =['舔狗','女神','大叔','小鲜肉'] for name in list: print(name)
c代码-阶乘求和(for循环)
c代码-阶乘求和(for循环)


