゛落君灬殇丶 发表于 2013-11-20 13:29:45

递归啊递归 递过去不给我回来了 我输入一个5为什么没有打印出返回值

#include <stdio.h>

double recursion (int n); //声明递归函数

int main()
{
        int n;
        double result;

        printf ("Please enter an integer:\n");
        scanf ("%d", &n);
        result = recursion(n);//存放结果
        printf ("%lf\n",result);//打印最终结果
}

double recursion (int n)//定义递归函数
{
        double temp_result;

        if ( n < 0 )
        {
                printf("Input error!\n");
        }
        else if (n==0 || n==1)
        {
                temp_result = 1;
               
        }
        else
        {
                temp_result = ( recursion(n) - 1 ) * n;
        }
        return temp_result;
}


qingchen 发表于 2013-11-20 13:32:44

是recursion(n-1)吧

゛落君灬殇丶 发表于 2013-11-20 13:55:47

qingchen 发表于 2013-11-20 13:32 static/image/common/back.gif
是recursion(n-1)吧

recursion(n) -1
如果写成这样.....后果是啥样的

qingchen 发表于 2013-11-20 17:16:19

我也没去打代码!

゛落君灬殇丶 发表于 2013-11-20 18:30:32

qingchen 发表于 2013-11-20 17:16 static/image/common/back.gif
我也没去打代码!

谢谢哈{:7_168:}

qingchen 发表于 2013-11-20 18:33:47

没事我也是才学习不久

゛落君灬殇丶 发表于 2013-11-20 18:36:20

qingchen 发表于 2013-11-20 18:33 static/image/common/back.gif
没事我也是才学习不久

对啦 为什么 temp_result= 1就不调用函数了直接打出结果了。。

゛落君灬殇丶 发表于 2013-11-20 18:39:04

qingchen 发表于 2013-11-20 18:33 static/image/common/back.gif
没事我也是才学习不久

是不是最后那个 else 反复着调用这个函数而当减到了1的时候就不在执行调用就跳出了。。

qingchen 发表于 2013-11-20 19:51:05

゛落君灬殇丶 发表于 2013-11-20 18:39 static/image/common/back.gif
是不是最后那个 else 反复着调用这个函数而当减到了1的时候就不在执行调用就跳出了。。

嗯当到1时都不会调用递归那函数了

牡丹花下死做鬼 发表于 2013-11-21 08:54:50

temp_result = ( recursion(n) - 1 ) * n;
这......   你是想写temp_result = ( recursion(n - 1)) * n;吧
要不然N的值一直没变当然退不出来了阿
页: [1]
查看完整版本: 递归啊递归 递过去不给我回来了 我输入一个5为什么没有打印出返回值