还不够好 发表于 2021-1-29 20:52:57

递归求 1+2+..+n 的和:加入了输入n语句后就得不到结果了

现在目前情况是:在代码里直接给 n 一个值,(我这里 n = 3)运行可以得到正确结果(6),但是当我把(在我的25行)a = DoSum(3);改为scanf("%d\n",&n);
a = DoSum(n); 后,当我输入3 后按回车没有得到结果,是空的,
完整代码:/*递归求和*/
#include <stdio.h>

int DoSum(int);
int DoSum(int num)
{
        if (num == 1)
        {
                return 1;
        }
        else
        {
       
                return num + DoSum(num - 1);
        }
       
       
}

int main()
{
        int n,a;
       
        //scanf("%d\n",&n);在这里加了一个输入n的操作
        a = DoSum(3);//a = DoSum(n);
        printf("%d",a);
       
        return 0;
}

sunrise085 发表于 2021-1-29 20:56:00

scanf("%d\n",&n); 问题在这一句,scanf中不能有回车。这导致你的n没有收到你输入的值。只有再次输入的时候才会给n赋值。但是你的程序没有再次输入,所以n没有赋值

嘉岳呀 发表于 2021-1-29 21:00:18

你的输入是
scanf("%d\n", &n);
说明要输完了n还要输入一个换行(回车)
所以把“\n”删掉。
还有,
第4行的东西没有用。

李京 发表于 2021-1-29 21:01:32

你的scanf中的换行符去掉,
要不然,你就要在输入一个不是空白字符的
具体去看看小甲鱼的scanf这一篇
页: [1]
查看完整版本: 递归求 1+2+..+n 的和:加入了输入n语句后就得不到结果了