用「遞迴函式」計算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