Gia sư Cần Thơ, Dạy Kèm Cần Thơ

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


Lập trình đệ quy với Mathematica 5.1

Share
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Lập trình đệ quy với Mathematica 5.1

Bài gửi  admin on Thu Feb 25, 2010 10:42 am

Tính n!


Code:
(*Viet ham xu ly trong truong hop n < 0*)
GiaiThua[n_] := If[n < 0, Return[-GiaiThua[-n]], If[n == 1 || n == 0,
    Return[1], Return[n*GiaiThua[n - 1]]]];
(*Goi ham va tham so*)
n = Input["Nhap vao gia tri n"];
Print[n, "!=", GiaiThua[n]];

Hãy chú ý với từng dấu "," và dấu ";"
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Ước chung lớn nhất của 2 số nguyên dương a và b theo thuật toán Euclide

Bài gửi  admin on Fri Feb 26, 2010 1:57 pm

Ước chung lớn nhất của 2 số nguyên dương a và b theo thuật toán Euclide
Code:
(*Uoc chung lon nhat cua 2 so nguyen a va b*)
UCLN[a_, b_] := If[a > b, UCLN[a - b, b], If[a < b, UCLN[a, b -
      a], Return[a]]];
a = Input["Nhap a"];
b = Input["Nhap b"];
Print["Uoc chung lon nhat cua a = ", a, " va b = ", b, " la ", UCLN[a, b]];


Được sửa bởi Admin ngày Wed May 25, 2011 8:16 am; sửa lần 1.
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Tìm phần tử Fibonacci thứ n

Bài gửi  admin on Fri Feb 26, 2010 2:08 pm

Tìm phần tử Fibonacci thứ n
Code:
Fibo[n_] := If[n == 1 || n == 2, Return[1], Return[Fibo[n - 1] + Fibo[n - 2]]]


Được sửa bởi Admin ngày Wed May 25, 2011 8:16 am; sửa lần 1.
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Ước chung lớn nhất của 1 danh sách n phần tử

Bài gửi  admin on Fri Feb 26, 2010 2:10 pm

Code:
(*Uoc chung lon nhat cua 2 so a va b*)
  UCLN[a_, b_] := If[a == b, Return[a], If[a > b, Return[UCLN[a - b, b]],
    Return[UCLN[a, b - a]]]]
  (*Uoc chung lon nhat cua n so*)
  UCLNList[L_, n_] := If[n == 1, Return[L[[1]]], If[
        n == 2, Return[
          UCLN[L[[1]], L[[2]]]], Return[UCLN[UCLNList[L, n - 1], L[[n]]]]
        ]
      ]
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Bài toán tháp Hà Nội

Bài gửi  admin on Sat Feb 27, 2010 1:28 pm

Chuyển n đĩa từ cột 1 sang cột 2 lấy cột 3 làm trung gian. Thứ tự các đĩa được sắp xếp từ nhỏ đến lớn (cái lớn nắm phía dưới).

Code:
(*Bai toan thap Ha Noi*)
Move[n_, a_, b_] := If[n == 1
      ,
      Print[a, "-->", b]
      ,
      Move[n - 1, a, 6 - a - b];
      Move[1, a, b];
      Move[n - 1, 6 - a - b, b];
];
n = Input[];
Print["Chuyen ", n, " dia tu  a sang b"];
Move[n, 1, 2];
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Tìm kiếm nhị phân trên danh sách có thứ tự

Bài gửi  admin on Sat Mar 05, 2011 5:17 pm

Tìm kiếm nhị phân trên danh sách có thứ tự giảm


Code:
BinarySearch[L_, x_, i_, j_] := Module[{Mid},
         Mid = Ceiling[(i + j)/2];
         If[i ≤ j,
           If[L[[Mid]] == x,
                  Return[True];
                  ,
                  If[L[[Mid]] < x,
                      Return[BinarySearch[L, x, i, Mid - 1]];
                      ,
                      Return[BinarySearch[L, x, Mid + 1, j]];
                   ];
               ];
           ,
           Return[False];   
        ];
];
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Tích các phần tử trong danh sách

Bài gửi  admin on Sat Mar 05, 2011 5:20 pm

Tích các phần tử trong danh sách

Code:
ProductList[L_, n_] := If[n == 1,
                  Return[L[[1]]]
                  ,
                  Return[L[[n]] ProductList[L, n - 1]];
               ];

Sponsored content

Re: Lập trình đệ quy với Mathematica 5.1

Bài gửi  Sponsored content


    Hôm nay: Thu May 24, 2018 10:45 pm