uva - 10696 - f91 解题报告

原题链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1637

题目大意:輸入一個正整數N並且依據以下的規則傳回一個正整數:

. 如果 N <= 100, 那麼 f91(N) = f91( f91( N+11) )

. 如果 N >= 101, 那麼 f91(N) = N-10

 

运用递归调用问题就很简单了,不过在编程中还是有一个问题,在 while(scanf("%ld",&n)&&n)中,如果将后面“&&n”改为“!=EOF” 结果就WA了,这是为什么呢?

 1 #include<stdio.h>
 2 long int f91(long int n){
 3 long int f;
 4 if(n>=101) f=n-10;
 5 else f=f91(f91(n+11));
 6 return f;}
 7 int main(){
 8     long int f91(long int n);
 9     long int n,s;
10     while(scanf("%ld",&n)&&n){
11     s=f91(n);
12     printf("f91(%ld) = %ld\n",n,s);
13     if(n==0) break;
14 }
15 }

 

posted @ 2013-02-13 09:19  sev_en  阅读(198)  评论(0编辑  收藏  举报