欣欣celin 发表于 2014-3-19 23:11:05

小递归,运行为何会报错?

#include "stdio.h"
long recursion(int n);
void main()
{
    int n;
    long result;
    printf("input a integer num: \n");
    scanf("%d", &n);

    result = recursion( n );
    printf("%d! = %ld\n", n, result);
}
long recursion(int n)
{
    long temp_result;
    if( n<0 )
    {
      printf("n < 0,input error!\n");
    }
    else if( n == 0 || n ==1 )
    {
      temp_result = 1;
    }
    else
    {
      temp_result = resursion( n-1 ) * n;
    }
    return temp_result;
}

以上代码跟鱼视频的一模一样,为何编译能过,但不能运行?
偶太菜了,找不出毛病,有劳各路大神拔刀相助,{:7_166:}{:7_181:}
-------------------Configuration: recursion - Win32 Debug--------------------
Linking...
recursion.obj : error LNK2001: unresolved external symbol _resursion
Debug/recursion.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

recursion.exe - 1 error(s), 0 warning(s)

machimilk 发表于 2014-3-19 23:11:06

    temp_result = resursion( n-1 ) * n;这句应该是
    temp_result = recursion( n-1 ) * n;

bjfuzqy 发表于 2014-3-19 23:46:59

如果楼上是对的,你编译应该过不了才对,可能是编译器找不到你的程序入口。

青玄 发表于 2014-3-20 00:02:59

以下是正确的代码:


#include <stdio.h>
long recursion(int n);
void main()
{
    int n;
    long result;
    printf("input a integer num: \n");
    scanf("%d", &n);

    result = recursion( n );
    printf("%d! = %ld\n", n, result);
}
long recursion(int n)
{
    long temp_result;
    if( n<0 )
    {
      printf("n < 0,input error!\n");
    }
    else if( n == 0 || n ==1 )
    {
      temp_result = 1;
    }
    else
    {
      temp_result = recursion( n-1 ) * n;    //这里是recursion而不是resursion
    }                                           //写代码可要注意哦!^_^!
    return temp_result;
}

呵呵!你只写错了一个字母!

夜神月0_0 发表于 2014-3-20 00:04:54

resursion 和recursion 一个字母只差,一开始写程序的时候要小心,写程序的能力是靠写出来的,可以经常写,遇到错误多留心,下次遇到了同样的错误就可以轻松解决了。加油!

水墨君 发表于 2014-3-20 12:14:48

#include "stdio.h"
long recursion(int n);
void main()
{
    int n;
    long result;
    printf("input a integer num: \n");
    scanf("%d", &n);

    result = recursion( n );
    printf("%d! = %ld\n", n, result);
}
long recursion(int n)
{
    long temp_result;
    if( n<0 )
    {
      printf("n < 0,input error!\n");
    }
    else if( n == 0 || n ==1 )
    {
      temp_result = 1;
    }
    else
                {
      temp_result =recursion( n-1 ) * n;
                }
return temp_result;
}
打错了变量名

月光、茉莉雅 发表于 2014-3-20 17:29:31

夜神月0_0 发表于 2014-3-20 00:04 static/image/common/back.gif
resursion 和recursion 一个字母只差,一开始写程序的时候要小心,写程序的能力是靠写出来的,可以经常写 ...

说的很棒,好多时候就是不熟练

欣欣celin 发表于 2014-3-20 22:35:16

machimilk 发表于 2014-3-19 23:11 static/image/common/back.gif
temp_result = resursion( n-1 ) * n;这句应该是
    temp_result = recursion( n-1 ) * n;

神啊,偶不得不去买块超级无敌大豆腐来撞一下{:7_163:},原来粗心一直是偶的死穴吖{:5_99:}

不过,非常感谢,终于可以运行,和调试了,嘻嘻

欣欣celin 发表于 2014-3-20 22:38:33

夜神月0_0 发表于 2014-3-20 00:04 static/image/common/back.gif
resursion 和recursion 一个字母只差,一开始写程序的时候要小心,写程序的能力是靠写出来的,可以经常写 ...

嗯,领教领教{:5_110:}
页: [1]
查看完整版本: 小递归,运行为何会报错?