1
2
3
4
5
6
7
8
|
void
stack_size()
{
static
int
call_time = 0;
char
dummy[1024*1024];
call_time++;
printf
(
"call time: %d\n"
,call_time);
stack_size();
}
|
1
2
3
4
5
6
7
|
int
sum1(
int
n)
{
if
(n == 0)
return
0;
else
return
n+sum1(n-1);
}
|
1
2
3
4
5
6
7
|
int
sum2(
int
n)
{
int
ret =
0
;
for
(
int
i =
1
; i <= n; i++)
ret += i;
return
ret;
}
|
1
2
3
4
5
6
7
|
int
sum3(
int
n,
int
acc)
{
if
(n == 0)
return
acc;
else
return
sum3(n-1,acc+n);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
int
sum3(
int
n,
int
acc)
{
if
(n == 0)
return
acc;
else
return
sum3(n-1,acc+n);
}
int
main()
{
int
n;
scanf
(
"%d"
,&n);
printf
(
"%d\n"
,sum(n,0));
return
0;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
int
fib(
int
n)
{
if
(n == 0 || n == 1)
return
1;
else
return
fib(n-1) + fib(n-2);
}
void
qsort
(
int
A,
int
p,
int
q)
{
r = partition(A,p,q);
qsort
(A,p,r-1);
qsort
(A,r+1,q);
}
int
gcd(
int
a,
int
b)
{
if
(b == 0)
return
a;
else
gcd(b, a%b);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
int
fib(
int
n,
int
count,
int
a ,
int
b)
{
if
(n == 0 || n == 1)
return
1;
else
if
(count > n)
return
b;
else
return
fib(n,count+1,b,a+b);
}
int
FIB(
int
n)
{
return
fib(n,2,1,1);
}
|
1
2
3
|
i = 1, ret = 0
for
(;i <= n; i++)
ret += i;
|
1
2
3
4
5
6
|
int
fun(
int
i,
int
ret) {
if
(i > n)
return
ret;
else
return
fun(ret+i,i+1);
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
void
qsort_iterate(
int
a[],
int
p,
int
q)
{
stack s;
s.push(p);
s.push(q);
while
(!s.empty())
{
int
high = s.top();
s.pop();
int
low = s.top();
s.pop();
if
(high > low)
{
int
r = partition(a,low,high);
s.push(low);
s.push(r-1);
s.push(r+1);
s.push(high);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
void
qsort_tail(
int
a[],stack s)
{
if
(!s.empty())
{
int
high = s.top();
s.pop();
int
low = s.top();
s.pop();
if
(high > low)
{
int
r = partition(a,low,high);
s.push(low);
s.push(r-1);
s.push(r+1);
s.push(high);
}
qsort_tail(a,s);
}
}
|
1
2
3
4
5
6
7
8
|
(define (qsort s)
(cond ((null? s) s)
((null? (cdr s)) s)
(
else
(let ((h (car s))
(left (filter (lambda (x) (<= x (car s))) (cdr s)))
(right (filter (lambda (x) (> x (car s))) (cdr s))))
(append (qsort left) (list h) (qsort right))))))
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
def qsort_lisp(A):
if
len(A) == 0 or len(A) == 1:
return
A
left = []
right = []
pivot = A[0]
for
i in range(1,len(A)):
if
A[i] left.append(A[i]);
else
:
right.append(A[i]);
return
qsort_lisp(left) + [pivot] + qsort_lisp(right)
x = [3,4,5,6,2,34,6,2,2,5,7,2,7]
print qsort_lisp(x)
|