#22671: 自己輸出都對 但測試執行都輸出0 0 可以請教怎麼改嗎


lion0hero@gmail.com (Victor)

學校 : 不指定學校
編號 : 92375
來源 : [101.10.92.198]
最後登入時間 :
2024-04-11 16:14:57
a216. 數數愛明明 | From: [101.12.21.36] | 發表日期 : 2020-09-24 09:40

#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;

}

 
#22673: Re:自己輸出都對 但測試執行都輸出0 0 可以請教怎麼改嗎


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a216. 數數愛明明 | From: [218.161.41.139] | 發表日期 : 2020-09-24 10:57

問題出在

long long int f(int a1) { /* 略 */ }

在遞迴呼叫 f(a1) 的過程中,a1 有可能會代入 0,是你的 f 沒有處理到的

 
#22674: Re:自己輸出都對 但測試執行都輸出0 0 可以請教怎麼改嗎


lion0hero@gmail.com (Victor)

學校 : 不指定學校
編號 : 92375
來源 : [101.10.92.198]
最後登入時間 :
2024-04-11 16:14:57
a216. 數數愛明明 | From: [101.12.21.36] | 發表日期 : 2020-09-24 11:45

問題出在

long long int f(int a1) { /* 略 */ }

在遞迴呼叫 f(a1) 的過程中,a1 有可能會代入 0,是你的 f 沒有處理到的


那應該怎麼改呢

 
#22675: Re:自己輸出都對 但測試執行都輸出0 0 可以請教怎麼改嗎


snakeneedy (蛇~Snake)

學校 : 國立高雄師範大學附屬高級中學
編號 : 7661
來源 : [114.40.8.251]
最後登入時間 :
2023-01-25 19:16:06
a216. 數數愛明明 | From: [218.161.41.139] | 發表日期 : 2020-09-24 12:09

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 的問題,就自己改看看吧

 
#22682: Re:自己輸出都對 但測試執行都輸出0 0 可以請教怎麼改嗎


lion0hero@gmail.com (Victor)

學校 : 不指定學校
編號 : 92375
來源 : [101.10.92.198]
最後登入時間 :
2024-04-11 16:14:57
a216. 數數愛明明 | From: [49.216.59.146] | 發表日期 : 2020-09-24 18:53

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

 
#22683: Re:自己輸出都對 但測試執行都輸出0 0 可以請教怎麼改嗎


lion0hero@gmail.com (Victor)

學校 : 不指定學校
編號 : 92375
來源 : [101.10.92.198]
最後登入時間 :
2024-04-11 16:14:57
a216. 數數愛明明 | From: [49.216.59.146] | 發表日期 : 2020-09-24 18:58

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


歐 我想通了 感謝大大

 
ZeroJudge Forum