c語言遞歸例子
A. c語言函數遞歸調用
我給你舉個簡單的例子你就明白了,你可以假設n=3
然後代入這個函數,a(3)=a(2)+5;而a(2)=a(1)+5;a(1)=1
所以最後就是a(3)=1+5+5=11…
同理你可以算出a(10)=1+5*9=46
滿意請採納
B. C語言迭代與遞歸比較(舉例)
我舉個例子:
①斐波那契數列:1,1,2,3,5,8,13,21,34......
迭代:int Fib[N];
Fib[0]=1;Fib[1]=1;
for(i=2;i<N;i++)
Fib[i]=Fib[i-1]+Fib[i-2];
}
遞歸:int Fib(int n)
{ if(n==0||n==1)return 1;
else return (Fib(n-1)+Fib(n-2));
}
C. C語言中遞歸調用的實例以及講解。
下面演示一個斐波那契數列前N項和#include <stdio.h>
#define COL 10 //一行輸出10個
long scan()
{ //輸入求fibonacci函數的第N項
int n;
printf("Input the N = ");
scanf("%d",&n);
return n;
}
long fibonacci(int n)
{ //fibonacci函數的遞歸函數
if (0==n||1==n) { //fibonacci函數遞歸的出口
return 1;
}
else {
return fibonacci(n-1)+fibonacci(n-2);
//反復遞歸自身函數直到碰到出口處再返回就能計算出第n項的值
}
}
int main(void)
{
int i,n;
n = scan();
printf("Fibonacci數列的前%d項\n", n);
for (i=0; i<n;) //輸出fibonacci函數前n項每項的值
{
printf("%-10ld",fibonacci(i++)); //調用遞歸函數並且列印出返回值
if(i%COL==0)
{ //若對COL取余等於0就換行,也就是控制每行輸出多少個,
//而COL=10就是每行輸出10個
printf("\n");
}
}
printf("\n");
return 0;
}
D. c語言類函數遞歸調用的簡單例子有哪些
=#include <stdio.h>
/// 求階乘函數
/// 遞歸思想
/// n! = n * (n-1) * (n-2) * ... * 1
/// n! = n * [(n-1) * (n-2) * ... * 1]
/// n! = n * (n-1)! 遞歸方程
/// 這是遞歸實現
unsigned Factorial(unsigned int n)
{
if (n == 0) return 1; // 對於0的階乘,當n=0時,遞歸返回
return n * Factorial(n-1); // 遞歸調用
}
void main()
{
int n = 3;
printf("3! = %d",Factorial(n));
}
E. 用C語言編寫一個遞歸函數
int findf( int n ){
int a,b,c;
b = n % 2;
c = 0;
if ( n>4){
if (b==c){
a=findf( n-1 ) + findf( n-3 );
}
else{
a=findf( n-2 ) + findf( n-4 );
}
return a;
}
else if ( n < 0){
return -1;
}
else{
return 1;
}
}
F. c語言遞歸求階乘
舉例:用遞歸方法求n;
#include<stdio.h>
int main()
{
int n;
int y;
printf("input a integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d ",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n<0)
printf("n<0,data error!");
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
(6)c語言遞歸例子擴展閱讀:
return用法:
return返回一個數值的意思就是把return<表達式>後面表達式的值返回給調用他的函數。舉個例子:
int sum(int i,int j)
{
return i+j;
printf("這個語句不會被執行,因為該子函數執行到上面的return語句就無條件結束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
程序的輸出為:
21
這個21從何而來呢main函數調用sum(a,b)函數時將a的值賦給i,b的值賦給j,上面說了return i+j;會計算i+j的值也就是結果等於21,並將21帶回給調用它的函數,即c=sum(a,b);相當於c=21,這個21就是由sum(a,b)中的return反回來的。
G. c語言 函數遞歸調用的簡單例子
舉一個用遞歸調用函數求輸入非負整數的階乘的例子,如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intfact(intn){
if(n==1||n==0)return1;
elsereturnn*fact(n-1);
}
intmain(void){
intx;
while(1){
printf("Inputx(int12>=x>=0)... x=");
if(scanf("%d",&x),x>=0&&x<=12)//x>12時會使結果溢出
break;
printf("Error,redo:");
}
printf("%d!=%d ",x,fact(x));
return0;
}
H. 講一下c語言中遞歸函數的使用方法
遞歸函數有三點要求:
1,遞歸的終止點,即遞歸函數的出口
2,不斷的遞歸調用自身
3,遞歸函數主體內容,即遞歸函數需要做的事情
ps:3一般可以放在2的前面或者後面,一般1放最前面。另外,2和3可以根據不同的需要合並,比如,有時候遞歸函數的主體就是返回調用下層函數所得到的結果。
具體例子如下:
voidfun(intn)
{
if(n<=0)return;//1這是遞歸的終點,即出口
fun(n-1);//2、遞歸函數自身的調用
cout<<n<<endl;//3遞歸函數的主體內容
}
2,3合並的情況
intfun(intn)
{
if(n<=0)return0;
returnfun(n-1)+fun(n-2);//23合並
}
I. C語言中的遞歸是什麼意思
程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種演算法在程序設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解。
遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在於用有限的語句來定義對象的無限集合。
一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
(9)c語言遞歸例子擴展閱讀:
遞歸的應用
1、數據的定義是按遞歸定義的。(Fibonacci函數)
2、問題解法按遞歸演算法實現。這類問題雖則本身沒有明顯的遞歸結構,但用遞歸求解比迭代求解更簡單,如Hanoi問題。
3、數據的結構形式是按遞歸定義的。
遞歸的缺點
遞歸演算法解題相對常用的演算法如普通循環等,運行效率較低。因此,應該盡量避免使用遞歸,除非沒有更好的演算法或者某種特定情況,遞歸更為適合的時候。在遞歸調用的過程當中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等。
J. c語言,求遞歸演算法的技巧最好有經典例子!
c語言中遞歸的最經典應用是求兩個數的最小公約數,代碼如下:
int MinDivisor( int m, int n)
{
if(m%n==0)
return n;
else
return MinDivisor(n, m%n);
}