You are on page 1of 4

BÀI TẬP

Giải thích các code sau đây:

Câu 1: cho hàm đệ qui sau?


int fun1(int x, int y){
if (x == 0)
return y;
else
return fun1(x - 1, x + y);
}
Giả sử với x =5, y =2, kết quả trả về là bao nhiêu?

Câu 2:
/* Assume that n is greater than or equal to 1 */
int fun1(int n){
if (n == 1)
return 0;
else
return 1 + fun1(n / 2);
}
Giả sử với n bằng 15, 31 thì hàm fun1() trả về kết quả tương ứng là bao nhiêu?

Câu 3:
/* Assume that n is greater than or equal to 0 */
void fun2(int n){
if(n == 0)
return;
fun2(n/2);
cout << n%2 << endl;
}
Với n = 21 thì hàm fun2() in ra kết quả là gì:

Câu 4:
void fun1(int n){
int i = 0;
if (n > 1)
fun1(n - 1);
for (i = 0; i < n; i++)
cout << " * ";
}
Tổng số ngôi sao in ra là bao nhiêu?

Câu 5:
#define LIMIT 1000
void fun2(int n){
if (n <= 0)
return;
if (n > LIMIT)
return;
cout << n <<" ";
fun2(2*n);
cout << n <<" ";
}
Với n = 100, hàm fun2() in ra các giá trị nào?

Câu 6:
#include <iostream>
using namespace std;
void fun(int x){
if(x > 0){
fun(--x);
cout << x <<" ";
fun(--x);
}
}
int main(){
int a = 4;
fun(a);
return 0;
}
Output của chương trình trên là gì?
Câu 7:
#include <iostream>
using namespace std;
int fun(int a[],int n){
int x;
if(n == 1)
return a[0];
else
x = fun(a, n - 1);
if(x > a[n - 1])
return x;
else
return a[n - 1];
}
int main(){
int arr[] = {12, 10, 30, 50, 100};
cout << " " << fun(arr, 5) <<" ";
getchar();
return 0;
}
Output của chương trình trên là gì?

Câu 8:
#include <iostream>
using namespace std;
int fun(int i){
if (i % 2) return (i++);
else return fun(fun(i - 1));
}
int main(){
cout << " " << fun(200) << " ";
getchar();
return 0;
}
Output của chương trình trên là gì?
Câu 9:
#include <iostream>
using namespace std;
int fun(int a, int b){
if (b == 0)
return 0;
if (b % 2 == 0)
return fun(a + a, b/2);
return fun(a + a, b/2) + a;
}
int main(){
cout << fun(4, 3) ;
return 0;
}
Output của chương trình trên là gì?

You might also like