#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的 我照上面改了也沒過耶 我可能要再想一下
歐 我想通了 感謝大大