关于递归的部分的几道题

    xiaoxiao2021-03-25  63

    

    /* 将一个整数写成几个质因数的连乘积,如: 输入36,则程序输出36=2*2*3*3 。 1.程序分析, 比如12=2*2*3 找到12最小的质因数,2,然后递归 12/2=6  将6 放进去,6=2*3  同理 2是最小的质因数,剩下的 */ #include"stdio.h" #include<iostream> using namespace std; void  resverse(int n)   {  if(n==2||n==3)          //判出条件暂时设置为2或者3   {   printf("最后一个数是%d",n);  }    int i,k;   for(i=2;i<n;i++)   {                             !!!!!!!!!!!!!!  递归的两个重点  第一个是回归条件  第二个是递归完之后呢    if(n%i==0)    {       // printf("%d  %d",n,i)         k=n/i;       printf("%d",i);      resverse(k);      break;  }   }   }                                                  int main() {  int n;  //scanf("%d",n);              //备注   在这里用scanf就不可以,调试之后就会死循环  ????   明天过来解决,感冒快死了          //用cin  就可以 不报错     cin >> n;  resverse(n);  system("pause"); }

    关于递归部分比较重要的两个点   一个是回归条件  第二个是递归完毕之后的事情

    我这里有两个问题, 因为还在测试阶段, 这里的回归条件明天过来改 

    哎呀 SBSB了   地制符没有加 

     scanf("%d",&n);     这样就对了

    /* 将一个整数写成几个质因数的连乘积,如: 输入36,则程序输出36=2*2*3*3 。 1.程序分析, 比如12=2*2*3 找到12最小的质因数,2,然后递归 12/2=6  将6 放进去,6=2*3  同理 2是最小的质因数,剩下的 */ #include"stdio.h" #include<iostream> using namespace std; void  resverse(int n)   {  /*  if(n==2||n==3)          //判出条件暂时设置为2或者3   {   printf("最后一个数是%d",n);  }  */   int i,k;  int count=0;  for(i=2;i<=n;i++)  {   if(n%i==0)   {    count++;   }  }    if(count==1)  {    printf("最后一个数是%d",n);                       //判出条件改为是不是质数  }              for(i=2;i<n;i++)   {                             !!!!!!!!!!!!!!  递归的两个重点  第一个是回归条件  第二个是递归完之后呢    if(n%i==0)    {       // printf("%d  %d",n,i)         k=n/i;       printf("%d",i);      resverse(k);      break;  }   }   }                                                  int main() {  int n;  scanf("%d",&n);              //备注   在这里用scanf就不可以,调试之后就会死循环          //用cin  就可以 不报错     //cin >> n;  //scanf("%s%d",s,&n)!=EOF  resverse(n);  system("pause"); }

     
    转载请注明原文地址: https://ju.6miu.com/read-36339.html

    最新回复(0)