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 }