#include <stdio.h>
double recursive(int n)。
double iterative(int n);
int n。
double ans1, ans2;
int main(int n) {
do {
printf("input:"/span>)。
scanf("%d", &n)。
ans1 = 遞回(n)。
ans2 = iterative(n);
printf("%f", ans1) 。
printf("%f", ans2);
} while (n != 0) 。
return 0;
}
double recursive(int n) {
double result = 0.0;
result = (1 / n);
return recursive(n)。
}
double iterative(int n) {
int i;
double result = 0.0;
for (i = 0; i < n; i ) {
result = (1 / n);
}
return result。
}
Visual studio說,遞回函式和迭代函式有c2660錯誤。我想我在宣告函式和使用函式時各用了一個引數。我怎樣才能解決這個問題呢?
uj5u.com熱心網友回復:
這里的大問題是在你的遞回函式中。 每個遞回函式都需要一個基例。 也就是說,必須有一些條件,當它為真時,不會導致遞回呼叫。 此外,除非該條件是基于一些全域變數(這不是一個好主意),否則你需要改變你呼叫該函式的引數,否則它每次都會做同樣的事情,永遠不會達到基數。 正如你所擁有的,對recursive的呼叫將永遠不會回傳,因為它最終總是以相同的引數呼叫自己。
如果不了解這個函式的目的,就很難知道這個條件應該是什么。
uj5u.com熱心網友回復:
當你宣告你的main時,你只有2個選擇 :
int main(void)
{
return(0)。
}
和
int main(int argc, char **argv) /span>
{
return(0)。
因為你的主函式不能在其他地方被呼叫,而只能在你的程式開始時呼叫,這可能會造成很多麻煩,然后你應該除錯你的程式,看看你是否有無限回圈。 劇透:有無限回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332266.html
標籤:
