Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Dùng đệ quy như thế nào cho bài này?

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    10

    Mặc định Dùng đệ quy như thế nào cho bài này?

    Phân tích 1 số ra thành các thừa số nguyên tố:


    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    
    void main ()
    {
    	int i,n,d;
    	clrscr();
    	printf ("Nhap so can phan tich:"); scanf ("%d",&n);
    	printf ("%d = ",n);
    	d=n;
    	if (n==0 || n==1)
    		printf ("%d",n);
    	for (i=2;i<=sqrt(d);i++)
    		{
    			while (n%i==0)
    			{
    				printf ("%d*",i);
    				n=n/i;
    			}
    		}
    	if (n==1)
    	{
    		getch(); return;
    	}
    	if (i>(sqrt(d)-1)) printf ("%d",n);
    	getch ();
    }
    Em yêu anh không hề toan tính
    Tình yêu mình vô đối phải không anh!

  2. #2
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Đệ quy ...
    Code:
    #include<stdio.h>
    #include<math.h>
    #include<conio.h>
    
    int is_nt(int n)
    {
    	if(n<2)return 0;
    	else if(n==2)return 1;
    	for(int i=2;i<=sqrt(n);++i)
    	if (n%i==0){return 0;}
    	return 1;
    }
    
    void nt(int n)
    {
    	static int kk=1,k=n;
    	if(k<kk)return;
    	if(is_nt(n)&&k%kk==0)
    	{
    		k/=kk;
    		if(k>=kk)
    			printf("%d*",n);
    		else printf("%d",n);
    		nt(kk);
    	}
    	else
    		if(kk!=k)
    		{
    			kk++;
    			nt(kk);
    		}
    }
    
    void tsnt(int n)
    {
    	if(is_nt(n))cprintf("%d",n);
    	else nt(n);
    }
    
    int main()
    {
    	clrscr();
    	const int n=11;
    	printf("%d = ",n);
    	tsnt(n);
    	getch();
    	return 0;
    }
    Đã được chỉnh sửa lần cuối bởi 6220119 : 12-10-2008 lúc 05:02 PM.
    code ra gió bão

  3. #3
    Ngày gia nhập
    01 2009
    Nơi ở
    PTIT
    Bài viết
    5

    cần j phải lằng nhằng như vậy,chỉ cần thế này thôi,đệ qui làm j cho lâu

    Code:
    void ptso(int n)
     { int i=2;
      printf("\n so %d phan tich thanh cac thua so ngto la",n);
      do           {
       if (n%i==0) {
    	n=n/i;
    	printf("%d*",i);
    			  }
       else (i++); }
      while (i<=n);
     }
    Thanks this 4room

  4. #4
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Hồi đó viết lằng nhằng vì trình độ có hạn và 1 số lý do khác :'>
    Hơn nữa đề bài yêu cầu đệ quy
    qua bài trên mình có 1 số cải tiến như sau:
    C Code:
    1. void  ptdq(int n)
    2. {
    3.     static int i=2;
    4.     if(i==2&&n<i)
    5.     {
    6.         printf("Ko the phan tich ra thua so nguyen to !\n");
    7.         return;
    8.     }
    9.     else if(n==i){printf("%d\n",n);i=2;return;}
    10.     else if(!(n%i))
    11.     {
    12.         printf("%d*",i);
    13.             ptdq(n/i);
    14.     }
    15.     else if(n%i)
    16.     {
    17.         i++;
    18.         ptdq(n);
    19.     }
    20. }
    Đã được chỉnh sửa lần cuối bởi 6220119 : 14-01-2009 lúc 01:51 PM.
    code ra gió bão

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

  1. Upload file dùng Ajax mà ko dùng Method Post của Form như thế nào?
    Gửi bởi hieupxd2cntt trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 8
    Bài viết cuối: 14-09-2014, 10:23 PM
  2. Thẻ ưu đãi tiêu dùng quanh năm tiết kiệm tới 60% nhu cầu tiêu dùng nào!
    Gửi bởi chuyengia_td trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 15-08-2013, 12:24 PM
  3. Trả lời: 5
    Bài viết cuối: 15-11-2012, 09:43 PM
  4. Trả lời: 5
    Bài viết cuối: 22-02-2012, 06:20 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