Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 21 kết quả

Đề tài: Làm sao để tính giai thừa n không dùng đệ qui, không vòng lặp, không goto?

  1. #1
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    Mặc định Làm sao để tính giai thừa n không dùng đệ qui, không vòng lặp, không goto?

    làm sao để tính giai thừa n không dùng đệ qui,không vòng lặp,không goto ?
    Đã được chỉnh sửa lần cuối bởi zstar : 12-02-2011 lúc 10:30 PM.

  2. #2
    Ngày gia nhập
    12 2009
    Nơi ở
    Hà Nội
    Bài viết
    107

    làm sao để tính giai thừa n không dùng đệ qui,không vòng lặp,không goto ?--> kiến thức cơ bản
    tính n! mà ko dùng đệ qui, vòng lặp, goto á??? pro nào có cách làm thì showw hàng đi

  3. #3
    Ngày gia nhập
    01 2011
    Nơi ở
    -Mountain-
    Bài viết
    768

    uk!!~ mình cũng ko bik. chỉ zùm mình với. ^^
    mà nếu tính thủ công thì mình tính n!=n.(n-1).....1
    đương nhiên là n phải biết trước để còn tính
    :-D

  4. #4
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Hì.Cách tận dụng tính chất của Constructor trong OOP có vẻ tạm chấp nhận đc bác nhỉ

  5. #5
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    Trích dẫn Nguyên bản được gửi bởi tauit_dnmd Xem bài viết
    Hì.Cách tận dụng tính chất của Constructor trong OOP có vẻ tạm chấp nhận đc bác nhỉ
    chấp nhận được chứ. cách duy nhất

  6. #6
    Ngày gia nhập
    12 2009
    Nơi ở
    Hà Nội
    Bài viết
    107

    Mặc định Làm sao để tính giai thừa n không dùng đệ qui, không vòng lặp, không goto?

    trời, dùng constructor và biến static trong class

  7. #7
    Ngày gia nhập
    12 2009
    Nơi ở
    Hà Nội
    Bài viết
    107

    mà dùng constructor thế cũng gần như đệ quy quá. vì cũng biến không gian đầu vào n thành không gian nhỏ hơn để tăng kq

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    Trà Vinh
    Bài viết
    20

    Trích dẫn Nguyên bản được gửi bởi zstar Xem bài viết
    dùng vòng while

    làm sao để tính giai thừa n không dùng đệ qui,không vòng lặp,không goto ?
    Dùng switch() case
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. void main()
    4. {    clrscr();
    5.       int n;
    6.       long gt;
    7.       //Kiem tra dieu kien nhap
    8.       do
    9.       {     printf("Nhap n= ");
    10.              scanf("%d",&n);
    11.        }
    12.        while (n<0||n>50);
    13.        switch (n)
    14.        {     case 0:
    15.               case 1: gt=1;
    16.                          break;
    17.               case 2: gt=2;
    18.                          break;
    19.               ..............
    20.               case 50:...........
    21.                           break;
    22.         }
    23.          printf(" %d ! = %ld",n,gt);
    24.          getch();
    25. }
    Còn nếu muốn tính giá trị giai thừa lớn hơn thì sửa điều kiện nhập và thêm nhiều lệnh case thôi àh!!!!!!!!!!!!!!
    Nó là con của thằng nào ? Con của thằng nào ? Nói mau!!!!!!!!!!!!!!!

  9. #9
    Ngày gia nhập
    08 2011
    Nơi ở
    Trà Vinh
    Bài viết
    20

    Trích dẫn Nguyên bản được gửi bởi zstar Xem bài viết
    dùng vòng while

    làm sao để tính giai thừa n không dùng đệ qui,không vòng lặp,không goto ?
    Thì dùng switch() case:
    Rồi ngồi liệt kê ra các giá trị giai thừa từ 1 đến 100 chẳn hạn!!!!!!!!!!!!!!!!!!!!!!!!!!
    Nó là con của thằng nào ? Con của thằng nào ? Nói mau!!!!!!!!!!!!!!!

  10. #10
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,760

    Mặc định Tính giai thừa không sử dụng lặp, không đệ quy, không goto

    Cách này của Kevin, đảm bảo hết các yếu tố kể trên:
    - Không đệ quy
    - Không vòng lặp
    - Không goto
    - Kiến thức cơ bản

    Về tốc độ chắc chắn nhanh hơn tuốt mấy cách trên.

    C Code:
    1. const long int factorial[] = {
    2.     1,
    3.     1,
    4.     2,
    5.     6,
    6.     24,
    7.     120,
    8.     720,
    9.     5040,
    10.     40320,
    11.     362880,
    12.     3628800,
    13.     39916800,
    14.     479001600,
    15.     6227020800,
    16.     87178291200,
    17.     1307674368000,
    18.     20922789888000,
    19.     355687428096000,
    20.     6402373705728000,
    21.     121645100408832000,
    22.     2432902008176640000
    23. };
    24.  
    25. return factorial[n];

    Bác nào thích toán học, em tặng code sau:
    C Code:
    1. long int factorial(int n)
    2. {
    3.     n++;
    4.     return n^n*exp(-n)*sqrt(2*3.1415926536/n)*(1+1/(12*n)+1/(288*n^2)-139/(51840*n^3)-571/(2488320*n^4));
    5. }
    Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó.
    Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.

Các đề tài tương tự

  1. Lệnh goto trên C | Giúp mình hiểu về lệnh goto trên C?
    Gửi bởi kenptit trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 14-10-2013, 10:34 PM
  2. tính tổng dùng vòng lặp for hộ tớ với
    Gửi bởi thanhthanh_ht87 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 14
    Bài viết cuối: 09-09-2013, 08:51 AM
  3. Không dùng vòng lặp và đệ quy
    Gửi bởi cdphuc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 50
    Bài viết cuối: 25-08-2010, 02:04 AM
  4. tính giai thừa không dùng đệ quy
    Gửi bởi nhatnha trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 11-06-2010, 07:24 PM
  5. Chuyển hệ thập phân sang nhị phân chỉ dùng vòng for không dùng mảng
    Gửi bởi zodjac1990 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 24-02-2009, 06:16 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn