函式的遞迴可以簡單的理解為迴圈,但他和迴圈是不一樣的。函式的一次遞迴呼叫相當於一次迴圈。
一般情況下,迴圈要比遞迴計算的時間要快一些
函式的遞迴是在函式內呼叫自己,滿足限制條件後,就會返回到上乙個函式,知道返回到最初的函式
遞迴的呼叫條件:
1 限制條件 滿足這個條件,遞迴將不再進行。
2 每次的遞迴呼叫之後會越來越接近限制條件。
1.遞迴和非遞迴分別實現求第n個斐波那契數。
1) 採用非遞迴的方法 —迴圈
#define _crt_secure_no_warnings 1
#include #include int main()
n = i + j;
i = j;
j = n;
count++; }
system("pause");
return 0;
}
2)運用函式的遞迴呼叫來求斐波那契數列
#define _crt_secure_no_warnings 1
#include #include int fbnq(int n)
else
}int main()
2編寫乙個函式實現n^k,使用遞迴實現
#define _crt_secure_no_warnings 1
#include #include //jie函式 遞迴來算n的階乘
int jie(int n)
else }
int main()
3寫乙個遞迴函式digitsum(n),輸入乙個非負整數,返回組成它的數字之和,
例如,呼叫digitsum(1729),則應該返回1+7+2+9,它的和是19
#define _crt_secure_no_warnings 1
#include #include int digitsum(int n)
return n % 10 + digitsum(n / 10 );
}int main()
} int ret = digitsum(num);
printf("數字各位之和為:%d\n", ret);
system("pause");
return 0;
}
4編寫乙個函式 reverse_string(char * string)(遞迴實現)
實現:將引數字串中的字元反向排列。
要求:不能使用c函式庫中的字串操作函式。
#define _crt_secure_no_warnings 1
#include #include void reverse_string(char* arr)
}int main()
; reverse_string(arr);
system("pause");
return 0;
}
5.遞迴和非遞迴分別實現strlen
1) 非遞迴
#define _crt_secure_no_warnings 1
#include #include int strlen1(char * arr)
return count;
}int main()
; int ret = strlen1(arr);
printf("%d\n", ret);
system("pause");
return 0;
}
2) 遞迴
#define _crt_secure_no_warnings 1
#include #include int strlen1(char * arr)
else return 1 + strlen1(arr + 1);
}int main()
; int ret = strlen1(arr);
printf("%d\n", ret);
system("pause");
return 0;
}
7.遞迴方式實現列印乙個整數的每一位
#define _crt_secure_no_warnings 1
#include #include void printf(int n)
printf("%d ",n%10);
}int main()
C語言 之遞迴函式
今天來總結一下關於遞迴函式的使用方面的問題。遞迴函式就是在函式使用的時候自己呼叫自己,層層呼叫,來實現你想要的功能。有兩個最常用的例子,我們來寫一下。1 計算階乘 include int factorial int n 函式宣告 階乘 int main void int a 5 printf d的階...
C語言函式的遞迴
1.遞迴條件 採用遞迴方法來解決問題,必須符合以下三個條件 1 可以把要解決的問題轉化為乙個新問題,而這個新的問題的解決方法仍與原來的解決方法相同,只是所處理的物件有規律地遞增或遞減。說明 解決問題的方法相同,呼叫函式的引數每次不同 有規律的遞增或遞減 如果沒有規律也就不能適用遞迴呼叫。2 可以應用...
c語言遞迴函式實現
遞迴和非遞迴分別實現第n個斐波那契數 遞迴 include includeint fib int n return fib n 1 fib n 2 int main 非遞迴 include includeint fib2 int n return third int main 編寫乙個函式實現n k...