C语言递归问题该怎么学啊!学了很久还是不会搞

学C语言对递归不甚了解该怎么办(学很久)?一看到递归就想深入下去把每一步搞清楚结果往往弄晕了?该怎么办

给你一个很简单的例子,计算阶乘的:


int jc(int n)
{
    return n<=2?n:n*jc(n-1);
}

 

当n==4时,4的阶乘应该返回4*3*2=24

使用jc函数,调用printf("%d\n",jc(4));会发生如下调用流程:

jc(4)                ->

    n<=2不成立,所以jc(4)返回4*jc(3)

        jc(3)        ->

        n<=2不成立,所以jc(3)返回3*jc(2)

            jc(2)    ->

            n<=2成立,所以jc(2)返回2

        <-返回到调用者jc(3)

        jc(3)获得结果3*jc(2)=3*2=6

    <-返回到调用者jc(4)

    jc(4)获得结果4*jc(3)=4*6=24

<-返回到调用者printf

追问

这种问题很简单难不倒我!到2时是出口然后把2return给上一回的自己,然后是2*3然后是6*4.。。。。。以此类推。。。关键是有多次递归呢?比如二路归并排序?

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-22
那就彻底搞清楚一个,就都明白了
相似回答