Re: [問題] 請問這樣的程式要怎麼改成遞迴
個人直覺寫法,或許不是正規的遞回,請多包涵~
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
double err = pow(2.0, 5.0); //暫時縮小限值,不然要跑好久
double b[8] = {0, 0, 0, 0, 0, 0, 0, 0};
double m_tim = 0;
int counter(int i)
{
// 邏輯概念是,先檢查b[i]+1有無超過限值
// 若超過, b[i] = b[i-1] + 1
// 若無超過, b[i] = b[i] + 1
if (i == 1)
{
if (b[1]+1 > err)
{
b[0] = b[0] + 1;
return (b[0]);
}
return b[1];
}
if (b[i]+1 > err)
{
b[i-1] = counter(i-1) + 1;
return (b[i-1]);
}
else
return (b[i]);
}
void main()
{
while (b[0] < err - sizeof b/sizeof b[0] + 1)
{
//這邊的"7"請自行根據ARRAY大小給值
b[7] = counter(7) + 1;
m_tim = m_tim + 1;
}
printf("m_tim: %0.0f\n", m_tim);
system("pause");
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.180.4
※ 編輯: ljhgc 來自: 123.194.180.4 (07/08 01:31)
→
07/08 08:45, , 1F
07/08 08:45, 1F
→
07/08 08:46, , 2F
07/08 08:46, 2F
→
07/08 11:07, , 3F
07/08 11:07, 3F
→
07/08 11:09, , 4F
07/08 11:09, 4F
→
07/08 11:10, , 5F
07/08 11:10, 5F
→
07/08 11:13, , 6F
07/08 11:13, 6F
→
07/08 11:19, , 7F
07/08 11:19, 7F
→
07/08 11:36, , 8F
07/08 11:36, 8F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):