求大神指教!!
c++吧
全部回复
仅看楼主
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分
level 7
楼主看的是谭书,我会乱说!
2013年09月15日 14点09分 4
你就是乱说,课本本身有滴
2013年09月15日 15点09分
回复 烟雨鹤楼 :本身有不也是老谭的!
2013年09月16日 02点09分
回复 Mercenary_ok :难道这算法是独一无二,是他发明的?其他人就不能搞出来和他差不多的吗?真笨。
2013年09月16日 10点09分
1