用「递回函式」计算1到100的总和、求ㄧ数的最大值质因数

Home Home
引用 | 编辑 karen7710
2007-05-05 19:38
楼主
推文 x0
麻烦各位大大指导我,

以下这两个题目大概要怎么写 ..

访客只能看到部份内容,免费 加入会员



献花 x1
引用 | 编辑 GNUGCC
2007-05-05 21:22
1楼
  
1.
int Pow(int x)
{
  if ( x == 1 ) return 1;
  return x + Pow(x - 1);
}

献花 x1
引用 | 编辑 karen7710
2007-05-06 09:02
2楼
  
第一题我好像打的怪怪的~
麻烦大大告诉该怎么改?
因为题目规定要用递回函式!
复制程式
#include <stdio.h>
#include <stdlib.h>
int answer(int); 

int main(void)
{
   int i,sum=0;
   
   for(i=1;i<101;i++)
     {
       sum=sum+i;
       
     } 
   
   printf("sum=%d",answer); 
   system("pause");
   return 0;
}
int answer(int x)
{
  if ( x == 1 ) 
    return 1;
  return x + answer(x - 1);
}   


献花 x1
引用 | 编辑 海洋天使
2007-05-06 21:22
3楼
  
#include <stdio.h>
#include <stdlib.h>
int answer(int);

int main(void)
{

printf("sum=%d\n",answer(100));

system("pause");
return 0;
}
int answer(int x)
{
if ( x == 1 )
return 1;
return x + answer(x - 1);
}  

这样才是正确呼叫递回的方法

献花 x1
引用 | 编辑 karen7710
2007-05-06 21:40
4楼
  
谢谢上面这位大大的教导^^ 表情
那么 题目2.写出一个递回函式来求ㄧ数的最大值质因数(既是因数也是质数)
这题大概要怎么写呢?

献花 x1
引用 | 编辑 GNUGCC
2007-05-07 00:18
5楼
  
嘿嘿本人数学不是粉好可否有例子说明???

献花 x0
引用 | 编辑 karen7710
2007-05-08 21:25
6楼
  
求最大质因数那题,我打了以下这个程式,

可是出现了以下错误讯息,无法执行!
  In function `HighPrime':
6 error before '{' token

麻烦大大看我是哪里出错了?
复制程式
#include <stdio.h>
#include <stdlib.h>
int HighPrime(int,int)

int main(void)
{
    int i,n;
    do
    {
     printf("Enter n: ");
     scanf("%d",&n);
     if(n<1) 
      break;
     printf("最大质因数=%d\n",HighPrime(n,n)); 
  //从n检查回去,则第一个检查到的因数即为最大因数 
 }while(n>0);
 system("pause");
 return 0 ;
}
}
int HighPrime(int n,int i)
{
    int j,prime=1;
    if(n%i==0)
   {
    for(j=2;j<=i && prime==1;j++) //检查i是否为质数 
     if(i%j==0) prime=0; //整除就不是质数 
    if(prime) 
    return i; //若prime==1,则i为质数,回传i并结束函式 
 }
 return HighPrime(n,i-1); //否则继续用i-1代入算
}


献花 x0
引用 | 编辑 GNUGCC
2007-05-08 22:22
7楼
  
do
{
printf("Enter n: ");
scanf("%d",&n);
if(n<1)
  break;
printf("最大质因数=%d\n",HighPrime(n,n));
//从n检查回去,则第一个检查到的因数即为最大因数
}while(n>0);
system("pause");
return 0 ;
}
} // 这个要拿掉

上面的大括号删掉应该没问题...

献花 x0
引用 | 编辑 karen7710
2007-05-09 19:11
8楼
  
那个 } 我删掉还是一样错误~ 表情

献花 x0
引用 | 编辑 GNUGCC
2007-05-09 22:13
9楼
  
拿掉之后出现的错误讯息跟之前的一样吗???
可以贴上来吗???

献花 x1
引用 | 编辑 karen7710
2007-05-10 19:58
10楼
  
In function `HighPrime':
6 syntax error before '{' token
还是一样的错误~

献花 x0
引用 | 编辑 a86980
2007-05-10 20:44
11楼
  
下面是引用karen7710于2007-05-10 19:58发表的 :
In function `HighPrime':
6 syntax error before '{' token
还是一样的错误~
你在 HighPrime 函式
有一个for指令
少了 "{"   和   "}"
再try try看 表情

献花 x0
引用 | 编辑 GNUGCC
2007-05-11 00:01
12楼
  
可以请你把修改过的程式贴上来这样才
能看出错在那里...

献花 x0
引用 | 编辑 karen7710
2007-05-11 19:18
13楼
  
复制程式
#include <stdio.h>
#include <stdlib.h>
int HighPrime(int,int)

int main(void)
{
    int i,n;
    do
    {
     printf("Enter n: ");
     scanf("%d",&n);
     if(n<1) 
      break;
     printf("最大质因数=%d\n",HighPrime(n,n)); 
  //从n检查回去,则第一个检查到的因数即为最大因数 
 }while(n>0);
 system("pause");
 return 0 ;
}

int HighPrime(int n,int i)
{
    int j,prime=1;
    if(n%i==0)
   {
    for(j=2;j<=i && prime==1;j++) //检查i是否为质数 
    {
     if(i%j==0) prime=0; //整除就不是质数 
     }
    if(prime) 
    return i; //若prime==1,则i为质数,回传i并结束函式 
   }
 return HighPrime(n,i-1); //否则继续用i-1代入算
}

In function `HighPrime':
6 syntax error before '{' token

献花 x0
引用 | 编辑 GNUGCC
2007-05-11 22:07
14楼
  
int HighPrime(int,int);

上面那一行后面要加上分号因为是宣告原型...

献花 x1
引用 | 编辑 karen7710
2007-05-12 07:51
15楼
  
原来如此= ="
谢谢你帮我解决这个问题^^ 表情

献花 x1
引用 | 编辑 a86980
2007-05-12 09:16
16楼
  
下面是引用karen7710于2007-05-12 07:51发表的 :
原来如此= ="
谢谢你帮我解决这个问题^^ 表情
不错喔
发问问题
有始有终
送你鲜花一枚 表情

献花 x0
引用 | 编辑 GNUGCC
2007-05-12 21:15
17楼
  
如果有任何问题欢迎提出来讨论...

献花 x0
引用 | 编辑 karen7710
2007-06-19 12:35
18楼
  
这个程式,为什么每次出来的质因数都是1? 表情
复制程式
#include <stdio.h>
#include <stdlib.h>
int HighPrime(int,int);

int main(void)
{
    int i,n;
    do
    {
     printf("Enter n: ");
     scanf("%d",&n);
     if(n<1) 
      break;
     printf("最大质因数=%d\n",HighPrime(n,n)); 
  //从n检查回去,则第一个检查到的因数即为最大因数 
 }while(n>0);
 system("pause");
 return 0 ;
}

int HighPrime(int n,int i)
{
    int j,prime=1;
    if(n%i==0)
   {
    for(j=2;j<=i*i && prime==1;j++) //检查i是否为质数 
    {
     if(i%j==0) prime=0; //整除就不是质数 
     }
    if(prime) 
     return i; //若prime==1,则i为质数,回传i并结束函式 
   }
 return HighPrime(n,i-1); //否则继续用i-1代入算
}


献花 x0
引用 | 编辑 gamewalk
2007-06-21 03:53
19楼
  
HighPrime函式内

for(j=2;j<=i*i && prime==1;j++) <---- 这行 j <= i*i 应该是 j*j <= i

献花 x1
引用 | 编辑 karen7710
2007-06-21 08:08
20楼
  
原来如此,谢谢你喔^^ 表情

献花 x0