|
|
1.1 ! root 1: #print ! 2: Let's try a recursive function. Write a subroutine ! 3: power(x,n) ! 4: which computes x to the power n by the following ! 5: algorithm: ! 6: 1. if n is zero return 1. ! 7: 2. if n is odd return x*power(x,n-1). ! 8: 3. if n is even return the square of ! 9: power(x,n/2). ! 10: You may assume than x and n are integers, n>=0. ! 11: If n is negative return 0 for an answer. ! 12: Put your routine on a file "power.c". Compile ! 13: it and test it; then type "ready". ! 14: #once #create tzaqc.c ! 15: main() ! 16: { ! 17: if (power(-1,-1) != 0) ! 18: return(1); ! 19: if (power(-3,2) != 9) ! 20: return(1); ! 21: if (power(2,12) != 4096) ! 22: return(1); ! 23: if (power(3,5) != 243) ! 24: return(1); ! 25: if (power(-5, 5) != -3125) ! 26: return(1); ! 27: if (power(7,3) != 343) ! 28: return(1); ! 29: if (power(7,4) != 2401) ! 30: return(1); ! 31: if (power(3,7) != 2187) ! 32: return(1); ! 33: if (power(2,10) != 1024) ! 34: return(1); ! 35: return(0); ! 36: } ! 37: #user ! 38: cc tzaqc.c power.o ! 39: a.out ! 40: #succeed ! 41: /* a possible solution */ ! 42: power(x, n) ! 43: { ! 44: int k; ! 45: ! 46: if (n < 0) ! 47: return(0); ! 48: if (n == 0) ! 49: return(1); ! 50: if (n%2 == 1) ! 51: return(x * power(x, n-1)); ! 52: k = power(x, n/2); ! 53: return(k*k); ! 54: } ! 55: #log ! 56: #next ! 57: 40.1a 10
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.