C語言基礎:遞歸函數,全局(局)變量
#include <stdio.h>
int factorial(int a);
int Fibonacci(a);
long Hanoi(a);
void main()
{
}
函數遞歸調用:函數本身調用自身。類似於循環。
註意:編寫遞歸程序類似於循環語句需要註意條件,函數調用到什麽時候為止,否則會出現死循環。
1.利用遞歸實現階乘
int factorial(int a)
{
if(a==1)
{
return 1;
}
else
{
return a*factorial(a-1);//遞歸調用
}
}
2.斐波那契數列,古典兔子問題。
int Fibonacci(a)
{
if(a==1||a==2)
{
return 1;
}
else
{
return Fibonacci(a-1)+Fibonacci(a-2);
}
}
3.漢諾塔 DIY 根據層數計算多少次
long Hanoi(a)
{
if(a==1)
{
return 1;
}
else
{
return 2*Hanoi(a-1)+1; //H(n) = 2*H(n-1)+1 (n>1)
}
}
4.局部變量:A.作用範圍僅限於該函數內;
B.不同函數可以聲明相同的名稱;
C.復合函數中只在當前的{}內有效。
5.全局變量:A.聲明在所有函數之外;
B.可以共同使用;
C.全局變量和局部變量,在局部變量的作用範圍內,同名的全局變量不起作用。
//形式參數是局部變量,只在該函數內有效。 註意:在設定的時候必須給類型
C語言基礎:遞歸函數,全局(局)變量