#include <stdio.h>
long long int f(int a1)
{ if(a1>=1)
return a1+f(a1-1);
}
long long int g(int a1)
{ if(a1>=1)
return f(a1)+g(a1-1);
}
int main(){
int a1;
while(scanf("%d",&a1)!=EOF)
{
if(a1==1){
printf("1 1\n"); continue;
}
printf("%lld %lld\n",f(a1),g(a1));
}
return 0;
}
問題出在
long long int f(int a1) { /* 略 */ }
在遞迴呼叫 f(a1)
的過程中,a1
有可能會代入 0
,是你的 f 沒有處理到的
問題出在
long long int f(int a1) { /* 略 */ }在遞迴呼叫
f(a1)
的過程中,a1
有可能會代入0
,是你的 f 沒有處理到的
那應該怎麼改呢
long long int f(int a1) { if(a1 >= 1) return a1 + f(a1 - 1); return 0; }
或
long long int f(int a1) { if(a1 > 1) return a1 + f(a1 - 1); return 1; }
後來發現,你的 g(a1)
也要修正 a1 = 0
的問題,就自己改看看吧
long long int f(int a1) { if(a1 >= 1) return a1 + f(a1 - 1); return 0; }或
long long int f(int a1) { if(a1 > 1) return a1 + f(a1 - 1); return 1; }後來發現,你的
g(a1)
也要修正a1 = 0
的問題,就自己改看看吧
可是他的測資都是大於0的 我照上面改了也沒過耶 我可能要再想一下
long long int f(int a1) { if(a1 >= 1) return a1 + f(a1 - 1); return 0; }或
long long int f(int a1) { if(a1 > 1) return a1 + f(a1 - 1); return 1; }後來發現,你的
g(a1)
也要修正a1 = 0
的問題,就自己改看看吧可是他的測資都是大於0的 我照上面改了也沒過耶 我可能要再想一下
歐 我想通了 感謝大大