|
|
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.