組み合わせ個数を求めるだけなら、1,2,4,.....2^nグラムまでの演算結果配列を用意する作戦はどうだろう?
1)小数点以下を消去する、 ?????.x が入力されたら 1.x , 2.x .... を答えが出るまで計算する
2)残った数字を2進に直してオンになってる配列と1)の答えを掛け合わせる
上限を設ける必要が有るのと邪道であると言う事に目をつぶれば重さが増えても演算時間に変化は無いのでは?