为了账号安全,请及时绑定邮箱和手机立即绑定

请问用递归法求一到n的和怎么求,我这样为什么不对呢?

#include<stdio.h>

int main()

{

int a,n,sum=0;

scanf("%d",&n);

for(a=1;a<=n;a++)

sum+=s(a);

    printf("%d",sum);

return 0;

}

int s(int x)

{int y,n;

if(x==0||x==1)

y=1;

else

y=s(n-1)*n;

return(y);

}


正在回答

1 回答

用递归就不要用for。命名习惯也不好,但是我懒得改了。

#include<stdio.h>

int main()

{

int a,n,sum=0;

scanf("%d",&n);

s(n);

printf("%d",sum);

return 0;

}

int s(int x)

{

if(x==1)

  return 1;

else

  return s(x-1)+x;

}


1 回复 有任何疑惑可以回复我~
#1

qq_小明_60 提问者

非常感谢!
2016-04-13 回复 有任何疑惑可以回复我~
#2

qq_小明_60 提问者

你这没把s(n)的值赋给sum吧
2016-04-13 回复 有任何疑惑可以回复我~
#3

iceluna 回复 qq_小明_60 提问者

啊是,那句应该是sum = s(n);
2016-04-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问用递归法求一到n的和怎么求,我这样为什么不对呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信