level 3
刚学算法分析与设计,其实之前学C++的递归还是懂得,递归其实无非是递推和回归嘛,但是我最怕的就是回归,特别遇到for这类,对每一段函数的多个变量的值很容易混淆。看别人程序慢慢理解还是理解的,但是要自己真正写的时候写不对。有时候是for之后的if条件的几个语句顺序不对,都搞不清哪个在前,哪个在后。例如下面:
void A(k)
{
for(i=k;.......)
if(.....)
{ swap(j,k);
A(k+1);
swap(j,k);
}
}
如果更复杂的,都不知道怎么写了,发现递归函数逻辑性好强啊。
I
2013年09月15日 09点09分
1
level 3
#include <iostream>
using namespace std;
int list[5]={1,3,5,6,9};
void swap(int list[],int k,int i)
{
int temp;
temp=list[k];
list[k]=list[i];
list[i]=temp;
}
void perm(int list[], int k, int m)
{ if(k==m)
{ for(int i=0; i<=m; i++)
cout<<list[i];
if(i==m+1)
cout<<endl;
}
else
{
for(int i=k; i<=m; i++)
{
swap(list,k,i);
perm(list,k+1,m);
swap(list,k,i);
}
}
}
void main()
{
perm(list,0,4);
}
好吧,我把完整代码弄上。求大神指教。对于这种类似的for结构,多重语句的递归函数有无办法,一看就懂?不用理解好久的?求方法。而且,求编写类似这种递归函数的最快的方法,就是如何一写就知道编写大致是对的?反正,不管了,求读和写递归函数的解决方法?
I
2013年09月15日 11点09分
3
还是仅凭语感就觉得自己编写是对的?
2013年09月15日 11点09分