Re: [问卦] 写程式会用递回 大概是什么程度?

楼主: utomaya (乌托马雅)   2023-02-14 22:25:35
※ 引述《jason851124 (YeeeEX)》之铭言:
: 乳提
: 在写code的时候
: 常用循环来设条件 让程式来达成想要的目的
: 如for, while, do while
: 但有另一种比较进阶的概念叫递回
: 就如同全面启动一样 一层一层的进入梦靥
: 一层一层的呼叫自身函数 最后在慢慢逃脱
: 这种架构在撰写的时候 逻辑要更清晰
: 想问可以习惯写递回的人
: 大概是什么等级阿? 有挂?
以前在C语言板看过一个签名档
一个在程式语言界有名的人说了一句话:“递回只在天上有,凡人应该用循环”
可能对方是名人,大家都奉为圭臬
我一点都不同意
举个简单例子好了
一个阵列a[]取任意3个,用循环怎么写?
for(int i=0;i<a.size();i++)
{
for(j=i+1;j<a.size();j++)
{
for(k=j+1;k<a.size();k++)
{
//.....
//以下做特殊处理
}
}
}
那如果取20个咧,不就写到昏倒
以前在冼镜光的名题精选百则<使用C语言>有提到一个方法,不用递回,也不用上述作法
列出K个元素的子集
可是非常难懂,是60年代的计算机科学家就发明出来的方法
因为非常难懂(至少对我),一阵子没读又忘了
可是这种阵列a[]取任意n个,用递回来做非常好写
我都这样写
void recur(int tl, int level, int start)
{
if(level==0)
{
//以下做特殊处理
// ......
return;
}
for(int i=start;i<a[].size();i++)
{
recur(tl,level-1,i+1);
}
}
在最后一层干掉就好
我在ProjectEuler很常用到这种递回

Links booklink

Contact Us: admin [ a t ] ucptt.com