1. 程式人生 > >C語言基礎:遞歸函數,全局(局)變量

C語言基礎:遞歸函數,全局(局)變量

否則 fib 語言 factorial 必須 不起作用 聲明 遞歸函數 tor

#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語言基礎:遞歸函數,全局(局)變量