设计一个计算3!的主函数如下,用来说明递归算法的执行过程:static void Main(stringl args)long fn;try1fn = fact(3);Console.WriteLine("fn= " + fn);1catch (Exceptione)1Console.WriteLine(e.Message);11
设计一个计算3!的主函数如下,用来说明递归算法的执行过程: static void Main(string[] args){ long fn; try { fn = fact(3); Console.WriteLine("fn = " + fn); } catch (Exception e) { Console.WriteLine(e.Message); } }
主函数用实参n=3调用了递归算法fact(3),而fact(3)要通过调用fact(2)、fact(2)要通过调用fact(1)、fact(1)要通过调用fact(0)来得出计算结果。fact(3)的递归调用过程如下图所示,其中,实线箭头表示函数调用,虚线箭头表示函数返回,此函数在返回时函数名将带回返回值。fact(1)fact(2)fact(3)mainfact(0)return1fnfact(3)yfact(2)yfact(1)yfact(0)621return(2*y)return(1*y)return(3*y)
主函数用实参n = 3调用了递归算法fact(3),而fact(3)要通过调用 fact(2)、fact(2)要通过调用fact(1)、fact(1)要通过调用fact(0)来得 出计算结果。fact(3)的递归调用过程如下图所示,其中,实线箭头表 示函数调用,虚线箭头表示函数返回,此函数在返回时函数名将带回 返回值。 main . fn=fact(3) return(3*y) 1 6 2 1 fact(3) . y=fact(2) return(2*y) . fact(2) y=fact(1) . y=fact(0) fact(1) fact(0) return 1 return(1*y)
5.3递归算法的设计方法递归算法既是一种有效的算法设计方法,也是一种有效的分析问题的方法。递归算法求解问题的基本思想是:对于一个较为复杂的问题,把原问题分解成若干个相对简单且类同的子问题,这样较为复杂的原问题就变成了相对简单的子问题;而简单到一定程度的子问题可以直接求解:这样,原问题就可递推得到解
5.3 递归算法的设计方法 递归算法既是一种有效的算法设计方法,也是一种有效 的分析问题的方法。 递归算法求解问题的基本思想是:对于一个较为复杂的 问题,把原问题分解成若干个相对简单且类同的子问题,这 样较为复杂的原问题就变成了相对简单的子问题;而简单到 一定程度的子问题可以直接求解;这样,原问题就可递推得 到解