推 KitWoolsey:這是遞迴嗎 Q_O 03/30 22:19
※ 引述《qoo200033 (好時光)》之銘言:
: 問題:寫出一個可以計算1~100中是7的倍數的函式,若為7的倍數則傳回main()中印出
: 程式碼
: #include<stdio.h>
: int multiple(int);
: int main(void){
: int result,i=1;
: result=multiple(i);
: printf("%d is 7 multiple\n",result);
: return 0;
: }
: int multiple(int i){
: if (i==100)
: return (0);
: else{
: if (i%7==0)
: return i;
: } multiple(i+1);
: }
: 答案永遠都只有一個,請問各位高手在遞迴的部分要怎麼寫比較好
要有一個結構或物件變數收集計算結果:
struct List { int head; struct List *tail; };
struct List* multiple(int from) {
struct List *result;
if (from > 100)
return NULL;
if (from % 7 == 0) {
result = (struct List*)malloc(sizeof(struct List*));
result->head = from;
result->tail = multiple(from + 1);
return result;
} else {
return multiple(from + 1);
}
}
但按照題目和你的寫法,要這樣玩也可以:
#include<stdio.h>
int multiple(int);
int main(void){
int i=1;
i = multiple(i);
while ( i >= 1 && i <= 100) {
printf("%d is 7 multiple\n", i);
i = multiple(i + 1);
}
return 0;
}
int multiple(int i){
if (i==100)
return (0);
else{
if (i%7==0)
return i;
} multiple(i+1);
}
--
/yau
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.114.217
※ 編輯: yauhh 來自: 218.160.114.217 (03/30 22:15)