root / Pi / C / examples / capi / fibmodule.c @ 308
Historique | Voir | Annoter | Télécharger (486 octet)
1 | 7 | equemene | #include <Python.h> |
---|---|---|---|
2 | 7 | equemene | |
3 | 7 | equemene | int _fib(int n) |
4 | 7 | equemene | { |
5 | 7 | equemene | if (n < 2) |
6 | 7 | equemene | return n;
|
7 | 7 | equemene | else
|
8 | 7 | equemene | return _fib(n-1) + _fib(n-2); |
9 | 7 | equemene | } |
10 | 7 | equemene | |
11 | 7 | equemene | static PyObject* fib(PyObject* self, PyObject* args)
|
12 | 7 | equemene | { |
13 | 7 | equemene | int n;
|
14 | 7 | equemene | |
15 | 7 | equemene | if (!PyArg_ParseTuple(args, "i", &n)) |
16 | 7 | equemene | return NULL; |
17 | 7 | equemene | |
18 | 7 | equemene | return Py_BuildValue("i", _fib(n)); |
19 | 7 | equemene | } |
20 | 7 | equemene | |
21 | 7 | equemene | static PyMethodDef FibMethods[] = {
|
22 | 7 | equemene | {"fib", fib, METH_VARARGS, "Calculate the Fibonacci numbers."}, |
23 | 7 | equemene | {NULL, NULL, 0, NULL} |
24 | 7 | equemene | }; |
25 | 7 | equemene | |
26 | 7 | equemene | PyMODINIT_FUNC |
27 | 7 | equemene | initfib(void)
|
28 | 7 | equemene | { |
29 | 7 | equemene | (void) Py_InitModule("fib", FibMethods); |
30 | 7 | equemene | } |