Of course you can define 0! to be anything you want. After all, it's a free country (I hope). But if you're at all serious about mathematics, you'll define 0!=1. It's not "hotly debated", except by undergrads with too much time on their hands.

  • If you want n!=n*(n-1)! to hold wherever possible, you'll have 0!=1 for the formula to hold for n=1. (It can't hold for n=0, unless you do really weird things for (-2)!, which you're never ever going to use, so don't bother trying to go that way)
  • If you want to write
    then you'll want 0!=1 for the formula to hold. (You'll also want 00=1 for the case x=0)
  • If you want the gamma function identity that linux8086 mentions, you'll want 0!=1.
  • If you want to think logically, 0!, the product of 0 factors, has to be the multiplicative identity, also known as 1.
  • If you want the combinatorics to work out, you'll note that there's exactly one way to permute the empty set: (), just like there's exactly one way to permute the set {1}: (1), just like there are exactly two ways to permute the set {1,2}: (1,2) and (2,1).
  • If you can think of anywhere where it would be useful to have 0! not equal 1, please /msg me.
So yes, you can decide you're not playing along. But you'll never get anything useful (and you'll have to special case all your formulae for n=0, and you'll work harder and finish all your tests last). So why not get with the program?