2 qq 29208603 qq_29208603 于 2015.06.22 19:44 提问

C语言的递归算法,编译为什么会出现这样的结果

图片说明

4个回答

bullzerone
bullzerone   2015.06.22 20:34
已采纳

首先你这不是递归算法,递归算法最基本的必须运算过程中直接或者间接的调用函数本身。
你的这个为题应该是 scanf() 函数的用法问题,去掉scanf()函数中除了 %d 以外的字符应该就没有问题了。
scanf()函数把从键盘读入的数存入指定的变量中,在你的程序中就是读入的数字放入整型变量n中,你的scanf()函数中除了有%d格式控制符外,还有一堆字符串,肯定是不对的。前面的格式化控制符,确定你要从键盘读入的数据的类型。

BTnode
BTnode   2015.06.22 20:10

因为scanf语句里面必须标准匹配!
scanf("请输入递归值%d",&n);
你就必须在屏幕输入以下内容:
请输入递归值%d

caozhy
caozhy   Ds   Rxr 2015.06.22 20:39
 写一个递归求和的给你
int foo(int n)
{
    if (n == 1) return 1;
    return n + foo(n - 1);
}
int main()
{
    int n = 0;
        scanf("%d", &n);
        int sum = foo(100);
        printf("%d\n", sum);
}
caozhy
caozhy   Ds   Rxr 2015.06.22 20:39
 int foo(int n)
{
    if (n == 1) return 1;
    return n + foo(n - 1);
}
int main()
{
    int n = 0;
        scanf("%d", &n);
        int sum = foo(n);
        printf("%d\n", sum);
}
Csdn user default icon
上传中...
上传图片
插入图片